2010-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2
3         * driver.c: Moonlight: Force line buffering for stdout.
4
5 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
6
7         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
8         are only callable using invoke.
9
10 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
11
12         * mini-llvm.c (process_bb): Use emit_load () in one more place.
13
14         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
15         MONO_LLVM=xxx is actually usable.
16
17         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
18         since LLVM might be able to hoist them out of loops.
19         (emit_store): Ditto.
20
21 2010-07-08  Neale Ferguson <neale@sinenomine.net>
22
23         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
24         in typeload-unaligned test.
25
26 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
27
28         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
29
30         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
31         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
32         generic trampolines+rgctx fetch trampolines.
33
34 2010-07-08  Geoff Norton  <gnorton@novell.com>
35
36         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
37
38 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
39
40         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
41
42         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
43         is not defined in the LLVM case to keep the imt arg alive.
44
45 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
46
47         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
48         functions, now its 'llvm_<FOO>_trampoline'.
49
50         * method-to-ir.c (emit_imt_argument): Fix llvm support.
51
52         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
53         cannot be passed in the same call.
54
55         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
56         register to be the same as the RGCTX register, the two can't be used together on
57         the same call.
58
59 2010-07-05  Miguel de Icaza  <miguel@novell.com>
60
61         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
62         that allows the user to force the VM to use llvm or sgen.
63
64 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
65
66         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
67         before processing the exception on PPC too.
68
69         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
70
71         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
72         'this' is always passed as the first argument, before the vtype ret arg. This
73         simplifies get_this_arg_reg () and LLVM integration.
74
75 2010-07-05  Martin Baulig  <martin@ximian.com>
76
77         * exceptions-x86.c (mono_arch_handle_exception): Port this to
78         Windows; apply my patch from r159782 in the mono-2-6 branch.
79
80 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
81
82         * Makefile.am: Don't build the debug assembler files if we're building without
83         debugger support.
84
85 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
86
87         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
88
89 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
90
91         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
92         length.
93
94         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
95         regs [ARMREG_FP] instead.
96
97         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
98
99         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
100         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
101
102         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
103
104         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
105
106         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
107
108         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
109         without IMT_REG defined (ARM).
110
111         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
112         the trampolines.
113
114 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
115
116         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
117
118 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
119
120         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
121         definitions to match their declarations and vice-versa.
122
123 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
124
125         * Makefile.am (common_sources): Add mini-llvm.h.
126
127         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
128
129 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
130
131         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
132         compiling.
133
134 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
135
136         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
137         implemt the option of loading the llvm backend from a module so
138         that we can have a single binary and the bloat from llvm is
139         only experienced when it is actually loaded.
140
141 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
142
143         * mini-llvm.c: remove direct access to mono_defaults.
144
145 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
146
147         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
148         a no-op.
149
150         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
151
152         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
153         is now mono_arch_nullify_class_init_trampoline ().
154         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
155         opcodes, they are no longer needed.
156
157         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
158         now mono_arch_nullify_class_init_trampoline ().
159         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
160         opcodes, they are no longer needed.
161
162         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
163         vtable on platforms which support it.
164
165         * driver.c: Print the full LLVM version we are compiled against in --version.
166
167         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
168         a bit better. Decode nesting information to fix eh support for llvm+aot.
169
170         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
171         methods.
172
173         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
174
175         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
176         is always passed as the first argument, before the vtype ret arg. This simplifies
177         get_this_arg_reg () and LLVM integration.
178
179 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
180
181         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
182         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
183         most of the vcall specific code to mono_vcall_trampoline () from
184         common_call_trampoline ().
185
186 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
187
188         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
189         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
190         if the callsite is patched.
191
192         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
193         the llvm branch.
194
195         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
196         the trampoline in the xdebug info.
197
198         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
199         as well.
200
201 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
202
203         * mini-llvm.c: Fix a few problems exposed by make check.
204
205 2010-06-25  Mark Probst  <mark.probst@gmail.com>
206
207         * mini-trampolines.c (common_call_trampoline): An ugly hack to
208         work around a potentially very hard to fix problem with inflating
209         generic methods.
210
211 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
212
213         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
214         problem has been fixes.
215
216 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
217
218         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
219
220         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
221         It might be be better to define a MonoGCJitOptions structure later and have the
222         GC return that.
223
224         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
225
226         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
227
228         * debugger-agent.c (get_objref): Implement support for sgen.
229
230         * driver.c: Remove the unused gc_wrapper.h include.
231
232         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
233         implementation.
234
235 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
236
237         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
238
239         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
240         in MonoCompile.
241
242         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
243         instead.
244
245 2010-06-23  Miguel de Icaza  <miguel@novell.com>
246
247         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
248         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
249
250         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
251         it only for Boehm diagnostics.
252
253         * Makefile.am: Make the file a bit more consistent.
254
255         * debug-debugger.c: Wrap the entire file with an #ifdef
256         MONO_DEBUGGER_SUPPORTED to simplify the build.
257
258         * Makefile.am: Fix the opcodes build issue by including the
259         source, not by including the .lo file directly
260
261         Always bring the MDB sources into the build, to drop the
262         dependency on the AM_CONDITIONAL from configure.in as the hard
263         debugger supports Boehm, but not Sgen, this simplifies the build. 
264
265         * Renamed the *.s files into *.S
266
267 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
268
269         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
270         wb for now on 64bits systems while issues with valuetype returns
271         are not fixed.
272
273 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
274
275         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
276         passes by calling createStandardFunctionPasses ().
277
278 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
279
280         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
281
282 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
283
284         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
285         MONO_INST_FAULT.
286
287         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
288         allow better optimization if the OP_LDADDR which caused the flag to be set was
289         optimized away.
290
291         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
292
293         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
294         the type token.
295
296         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
297
298         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
299
300 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
301
302         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
303         to handle the code sequence generated for non-near calls. Fixes #616056.
304
305 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
306
307         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
308
309         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
310
311         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
312         nesting clause too.
313         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
314         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
315         trampoline which saves the context, so changes made to callee saved registers in
316         finally clauses are visible to a nesting catch clause.
317
318         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
319
320         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
321         in LLVM compiled code.
322         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
323         the finally handler has ran.
324
325         * mini.h (ResumeState): New structure containing information required to resume
326         exception handling after executing LLVM compiled finally clauses.
327
328         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
329         bit, by passing all the registers as one argument.
330
331 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
332
333         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
334         to avoid an assert.
335
336 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
337
338         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
339
340         * aot-compiler.c aot-runtime.c: Fix LLVM support.
341
342         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
343         pad, branch to a new bblock instead.
344
345         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
346         orig_method.
347
348         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
349
350         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
351
352 2010-06-17  Geoff Norton  <gnorton@novell.com>
353
354         * mini-arm.h:
355         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
356         can be used by sgen.
357
358 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
359
360         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
361
362         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
363         fails.
364
365         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
366         the ip done by throw_exception (), it is not needed for corlib exceptions.
367
368 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
369
370         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
371         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
372         of size > 5 words. This support fast barriers for value types up to
373         256/512 bytes which     beyond that the copying itself is the major issue.
374
375         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
376         for gsharing, so use it.
377
378         This eliminate all calls to mono_value_copy from managed code in
379         gmcs, fsharp and ipy.
380
381         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
382
383         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
384         performance kept
385
386         * mini.c (mini_init): Register new icall.
387
388 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
389
390         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
391         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
392
393 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
394
395         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
396         value types as the overhead is huge. Manually expand it up to 5 words to
397         avoid code bloat.
398
399         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
400         is an exception that performance is dominated by mono_value_copy.
401
402         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
403
404 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
405
406         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
407         trampolines on x86, since those have their own cconv.
408
409         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
410         exception trampolines.
411
412         * tramp-x86.c: Add xdebug info for a few trampolines.
413
414         * mini-llvm.c: Set the name of the arguments.
415
416         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
417         using a block address if using the LLVM mono branch.
418
419         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
420         trampolines.
421
422 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
423
424         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
425
426         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
427
428         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
429
430         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
431
432         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
433         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
434         to identify the vtable slot address plus the method which needs to be compiled.
435
436         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
437         using llvm.
438
439         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
440         'this' is always passed as the first argument, before the vtype ret arg. This
441         simplifies get_this_arg_reg () and LLVM integration.
442
443         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
444         the latest changes.
445
446         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
447         these trampolines.
448
449         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
450
451         * mini-llvm.c: Fix compilation with llvm 2.6.
452
453         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
454
455         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
456         defined.
457
458         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
459         is always passed as the first argument, before the vtype ret arg. This simplifies
460         get_this_arg_reg () and LLVM integration.
461
462 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
463
464         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
465
466         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
467         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
468         translate into much nicer code.
469
470 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
471
472         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
473         parameter index information. Use this to simplify a lot of code.
474
475         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
476
477 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
478
479         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
480         to fix infinite generic recursion. Fixes #612702.
481
482 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
483
484         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
485         imt trampoline per imt slot when using LLVM.
486
487 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
488
489         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
490
491 2010-06-09  Levi Bard  <levi@unity3d.com>
492
493         * debugger-agent.c: Clear unloaded types on appdomain unload.
494
495 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
496
497         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
498         Fixes #612206.
499
500         * exceptions.cs: Add a test.
501
502 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
503
504         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
505
506         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
507
508         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
509         so it doesn't have to do it.
510
511         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
512         process does not mix with ours.
513
514         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
515         ones.
516
517         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
518         loads/stores which can throw exceptions inside clauses.
519
520 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
521
522         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
523         one ENDFINALLY.
524
525         * mini.c (mini_init): Register mono_resume_unwind as an icall.
526
527 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
528
529         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
530
531         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
532         locals.
533
534 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
535
536         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
537         appdomain.
538
539 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
540
541         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
542         Use a separate generic class init trampoline for llvm, since it needs a different
543         signature.
544
545         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
546         includes the location of this/rgctx.
547
548         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
549         branch.
550
551 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
552
553         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
554
555         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
556         clause.
557
558 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
559
560         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
561         says so.
562
563         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
564
565         * aot-compiler.c (patch_to_string): New debugging helper function.
566
567 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
568
569         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
570         trampoline.
571
572         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
573
574         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
575
576         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
577
578         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
579         clauses.
580
581         * mini.c (create_jit_info): Print EH clause info for LLVM too.
582
583 2010-05-28  Mark Probst  <mark.probst@gmail.com>
584
585         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
586         cpobj with reference types.
587
588 2010-05-28  Mark Probst  <mark.probst@gmail.com>
589
590         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
591         write barrier for reference types.
592
593 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
594
595         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
596         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
597
598 2010-05-31  Martin Baulig  <martin@ximian.com>
599
600         Fix #608271.
601
602         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
603         clear_breakpoint() on all breakpoint events and remove them from the list.
604
605 2010-05-27  Martin Baulig  <martin@ximian.com>
606
607         Fix #605698.
608
609         * debugger-agent.c (method_commands, type_commands): Temporarily
610         set the appdomain while executing this method; do all metadata
611         calls in the debuggee's appdomain where user assemblies are loaded.
612
613 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
614
615         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
616
617 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
618
619         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
620
621 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
622
623         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
624         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
625         be referenced even after the header is freed.
626
627         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
628         section.
629
630 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
631
632 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
633
634         * genmdesc.c (main): Fixing the detection of the nacl switch.
635
636         Code is contributed under MIT/X11 license.
637
638 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
639
640         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
641
642         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
643
644         * mini.h (LLVM_CHECK_VERSION): New helper macro.
645
646 2010-05-25  Miguel de Icaza  <miguel@novell.com>
647
648         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
649         the Perl program
650
651         * genmdesc.c: Added support for nacl: key on the machine
652         description files to support the extra space required by Google
653         Native Client.
654
655 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
656
657         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
658
659 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
660
661         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
662         mono_runtime_class_init_full ().
663         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
664
665 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
666
667         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
668
669 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
670
671         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
672         two are not the same on ilp32.
673
674 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
675
676         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
677         added by mistake.
678
679         * mini-ppc.c: Fix the DISABLE_JIT build.
680
681 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
682
683         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
684         (make_writable): Remove this unused function.
685
686 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
687
688         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
689         structure. Make the labels to plt entries local symbols instead of assembler local
690         labels, since tha latter causes problems for the iphone linker.
691
692 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
693
694         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
695
696 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
697
698         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
699         (ppc_patch_full): Ditto.
700
701         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
702
703         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
704         if gshared is enabled, to avoid asserts in the trampoline code.
705
706         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
707         on ia64.
708
709 2010-05-15  Geoff Norton  <gnorton@novell.com>
710
711         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
712         xdebug mode.
713
714 2010-05-14  Geoff Norton  <gnorton@novell.com>
715
716         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
717         misaligned stack on darwin.
718
719 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
720
721         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
722         arm.
723
724 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
725
726         * xdebug.c: Fix ARM support.
727
728 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
729
730         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
731         and do most of the work on the normal stack.
732         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
733
734 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
735
736         * aot-compiler.c: Put non-code data into the .rodata section on linux.
737
738 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
739
740         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
741
742 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
743
744         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
745         and do most of the work on the normal stack.
746
747 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
748
749         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
750         and do most of the work on the normal stack even if sigaltstack is disabled.
751
752 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
753
754         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
755         UCONTEXT_REG_ constants are available on linux as well.
756         (mono_arch_monoctx_to_sigctx): Ditto.
757         (mono_arch_ip_from_context): Ditto.
758
759 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
760
761         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
762         other domains.
763
764 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
765
766         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
767         no longer needed.
768
769 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
770
771         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
772         if a breakpoint cannot be inserted.
773
774 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
775
776         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
777
778 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
779
780         * debugger-agent.c (frame_commands): Return an error instead of asserting if
781         no JIT info is found for the method.
782
783 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
784
785         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
786         in debug printf.
787
788 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
789
790         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
791         a list of arch specific trampolines.
792
793         * aot-compiler.c (emit_trampolines): Use it.
794
795 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
796
797         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
798         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
799         get rid of the _full from their name.
800
801 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
802
803         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
804         get_nullified_class_init_trampoline to remove some code duplication.
805
806 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
807
808         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
809         attach.
810
811 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
812
813         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
814
815         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
816
817         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
818         there is no need to jump through the first plt entry.
819
820         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
821
822         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
823         arch-specific function.
824         (mono_aot_get_plt_info_offset): Ditto.
825
826         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
827         mono_arch_init () to register jit icalls called from full-aot trampolines.
828         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
829         to mini-<ARCH>.c.
830
831         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
832         the specialized throw corlib exception trampoline, use a variant of the normal
833         trampoline along with a new C function which does the call to
834         mono_exception_from_token (), just like on x86.
835
836 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
837
838         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
839         Reorganize the full aot trampoline creation functions, instead of taking a bunch
840         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
841         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
842         creation functions on architectures which have the full-aot ones.
843
844 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
845
846         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
847
848 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
849
850         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
851         explicitly, this seems to be required by some gcc versions at -O2.
852
853         * mini-arm.c: Ditto.
854
855 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
856
857         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
858         has_target delegate invokes.
859
860 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
861
862         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
863         info fields.
864
865         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
866         add patches/unwind info arguments, move to mini.c.
867
868         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
869
870 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
871
872         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
873         command which returns full path names.
874
875 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
876
877         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
878         code_size output variable.
879
880         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
881         mono_get_lmf_addr.
882         
883 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
884
885         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
886         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
887         (mono_arch_cpu_enumerate_simd_versions): Ditto.
888
889 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
890
891         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
892         apple assembler.
893
894 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
895
896         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
897
898 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
899
900         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
901
902 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
903
904         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
905
906 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
907
908         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
909         line number support works with eglib.
910
911 2010-04-27  Miguel de Icaza  <miguel@novell.com>
912
913         * driver.c, mini.c: Since linking with LLVM makes the default Mono
914         dirty an extra 70kb pages on startup we are now going to choose a
915         different strategy: ship mono and mono-llvm binaries, with the
916         second being the one that links with LLVM and defaults to LLVM
917         being enabled.
918
919 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
920
921         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
922         Implement full-aot support on x86.
923
924         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
925         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
926         the first register returned by get_global_int_regs ().
927
928         * cpu-x86.md: Fix the length of insertx_u1_slow.
929
930         * iltests.il.in: Disable tail call tests when running with full-aot.
931
932 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
933
934         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
935
936 2010-04-24  Mark Probst  <mark.probst@gmail.com>
937
938         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
939         in the initializer, because it's non-constant.
940
941 2010-04-23  Miguel de Icaza  <miguel@novell.com>
942
943         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
944         of LLVM on by default.   Used for buildbots and other setups.
945
946 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
947
948         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
949
950 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
951
952         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
953         initonly static fields when using moving GC.
954
955         Contributed under MIT/X11 license.
956
957 2010-04-23  Geoff Norton  <gnorton@novell.com>
958
959         * mini-amd64.h: Darwin x86_64 support.
960
961 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
962
963         * exceptions-arm.c: Remove platform checks in favor of configure checks.
964
965 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
966
967         * exceptions-arm.c: Add Android support for sigcontext structure.
968
969 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
970
971         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
972         wrappers correctly now that their wrapper info is NULL.
973
974 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
975
976         * mini.c (mono_jit_compile_method_inner): Avoid calling
977         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
978
979 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
980
981         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
982         so the latter can be #ifndef DISABLE_JIT-ed.
983
984         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
985
986 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
987
988         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
989
990 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
991
992         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
993         stack.
994
995 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
996
997         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
998         calling mono_class_num_methods (). Fixes #592244.
999
1000 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1001
1002         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1003
1004         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1005
1006 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1007
1008         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1009         version.
1010         * (handle_alloc): Ditto.
1011         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1012         change, its not needed anymore.
1013
1014 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1015
1016         * mini-posix.c (sigusr1_signal_handler): Fix build on
1017         non x86/amd64 systems.
1018
1019 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1020
1021         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1022         calls where the constrained class needs a context. Fixes #595863.
1023
1024         * iltests.il.in: Add a test.
1025
1026 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1029         2.6/SVN seems to have broken support for them.
1030
1031 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * mini-llvm.c: Fix support for LLVM 2.6.
1034
1035 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1036
1037         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1038         MonoInternalThread belonging to the thread.
1039
1040 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1041
1042         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1043         unsafe optimization that will remove bound checks.
1044
1045 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1046
1047         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1048         CompareExchange not to be inlined for I8.
1049
1050         Contributed under MIT/X11 license.
1051
1052 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1053
1054         * array.cs: Add tests for cast between primitive array types.
1055
1056 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1057
1058         * Makefile.am: create a convenience library for moon to link with
1059
1060 2010-04-07 Paolo Molaro <lupus@ximian.com>
1061
1062         * method-to-ir.c: optimize array accesses from generic interfaces.
1063
1064 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1067
1068 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1071         of marshalbyref classes.
1072
1073         Fixes #515884.
1074
1075 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1076
1077         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1078         information.
1079
1080         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1081         information.
1082
1083         * mini.h: Increase AOT version.
1084
1085 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1086
1087         * mini-x86.h: Only enable soft debugger when using sigaction or on
1088         Windows. Fixes build on Haiku (lacks siginfo_t).
1089
1090         Code is contributed under MIT/X11 license.
1091
1092 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1093
1094         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1095         BeOS-style signal handlers.
1096
1097         Code is contributed under MIT/X11 license.
1098         
1099 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1102
1103 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * mini-exceptions.c: Fix win32 build.
1106
1107 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1108
1109         * mini.c, driver.c: Call mono_gc_base_init() before
1110         mono_debug_init().
1111
1112 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1113
1114         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1115         call_method]): Delegate the actual work in security-core-clr.c
1116         to ease code sharing.
1117
1118 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1121         float conv.ovf.un opcodes are encountered, instead of asserting later.
1122         Fixes #566296.
1123
1124 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1125
1126         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1127
1128         * iltests.il.in: Add a test.
1129
1130 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1131
1132         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1133         large. Fixes #567040.
1134
1135         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1136
1137 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1140         #592711.
1141
1142 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1143
1144         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1145         mono_create_handler_block_trampoline with the proper #ifdef so that it
1146         compiles on amd64.
1147
1148 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1149
1150         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1151         allows to select if it's new or old context that is passed to 
1152         the callback.
1153
1154         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1155         case when executing a guarded handler from the EH machinery.
1156
1157         * mini-exceptions.c (mono_install_handler_block_guard): New function
1158         responsible for checking for handler blocks, installing the guard and
1159         clearing abort state.
1160
1161         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1162         to check for handler blocks and skip interruption logic if one was found.
1163
1164         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1165         by the handler block guard trampoline. Resumes interruption by raising the
1166         pending ThreadAbortException.
1167
1168         * mini.c (create_jit_info): Calculate the end address of a finally block.
1169
1170         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1171         of a finally block to a specified address and return the old one.
1172
1173         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1174         trampoline patches the original return address and calls the trampoline function.
1175
1176 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1179
1180         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1181         does the patching if the callee is in the same domain.
1182
1183         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1184         of mono_arch_patch_plt_entry ().
1185
1186 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * mini.c (create_jit_info): Fix try block hole length encoding.
1189
1190 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1191
1192         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1193         duplicate information and print offsets instead of absolute addresses.
1194
1195 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1198         event is sent. Fixes #591733.
1199
1200 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1203         OpenBSD.
1204
1205 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1206
1207         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1208         thread_to_tls hash table.
1209
1210         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1211         section. Fixes #591000.
1212
1213 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1214
1215         * Makefile.am (version.h): Check for pure .git directory only,
1216         fixes SVN revision when using git without git-svn.
1217
1218         Contributed under MIT/X11 license.
1219
1220 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1221
1222         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1223
1224 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * basic-simd.cs: Test for vector x scalar binary operators.
1227
1228 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1229
1230         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1231         intrinsics with expanded scalar arguments.
1232
1233 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1234
1235         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1236         don't have an exception class, so don't decode it. This would crash
1237         with filter clauses.
1238
1239 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1240
1241         Make sure that trunk builds with DISABLE_JIT, an update to the
1242         PlayStation 3 port.
1243         
1244         * mini.c (mini_get_shared_method): this code seems to be necessary
1245         regardless of whether DISABLE_JIT has been defined.
1246
1247         (mono_jit_compile_method_inner): it seems that this method is
1248         required even in full AOT mode, so ifdef out only the pieces that
1249         try to genrate code (the body of code that applies patches to the
1250         code).  
1251
1252         (mini_method_compile): do not compile when using DISABLE_JIT.
1253
1254         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1255         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1256         compile when DISABLE_JIT is set.
1257
1258 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1259
1260         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1261         arch really supports it.
1262
1263 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1264
1265         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1266
1267 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1268
1269         * exceptions-s390x.c: Add support for
1270         mono_arch_get_throw_corlib_exception and fix throw by name.
1271
1272         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1273         logic (especially for varargs); Correct localloc sizing; Add
1274         mono_arch_get_this_arg_from_call and
1275         mono_arch_get_this_arg_from_call.
1276
1277         * mini-s390x.h: Add support for facility list extraction;
1278         Correct/update MONO_ARCH_xxx settings.
1279
1280         * mini-s390.c: Minor corrections to instruction output for
1281         varargs. No IMT implementation - I think it's time to deprecate
1282         s390 and just leave s390x.
1283
1284         * tramp-s390x.c: Correct creation of trampoline instruction
1285
1286
1287         * cpu-s390x.md: Update some instruction lengths
1288
1289 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1292         can be hit with partial sharing.
1293
1294         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1295         in non-shared classes correctly.
1296         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1297         Turn on partial sharing.
1298
1299 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1300
1301         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1302         by mistake.
1303
1304 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1305
1306         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1307         mono_method_signature ().
1308
1309         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1310
1311         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1312         error checking, so later calls do not need error checking.
1313
1314 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1315
1316         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1317
1318         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1319
1320 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1321
1322         * mini-exceptions.c (mono_handle_exception_internal): Don't
1323         check try_end for archs different than s390. 
1324
1325         * mini.c (create_jit_info): Don't crash if the finallt block is the
1326         last one.
1327
1328 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1329
1330         * driver.c (mono_main): Don't free global codeman under linux since
1331         glic now peeks at code on stack for more archs than just amd64.
1332
1333 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1334
1335         * mini.c, method-to-ir.c: changes to support compressed interface
1336         bitmaps.
1337
1338 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1339
1340         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1341         Use sigaction on OpenBSD too.
1342
1343 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1344
1345         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1346
1347 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1348
1349         * debugger-agent.c: #include sys/select.h for fd_set.
1350
1351         Code is contributed under MIT/X11 license.
1352
1353 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1356         (openbsd+amd64 ?).
1357
1358 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1359
1360         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1361         some large methods with lots of exception handlers. Fixes #440924.
1362
1363 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1364
1365         * method-to-ir.c: remove code duplication for interface checks.
1366
1367 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1370         (assembly_unload): Clear all event requests referencing the to-be unloaded
1371         assembly.
1372
1373
1374 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1375
1376         * mini.h, mini-exceptions.c: restore the state of the stack
1377         guard page permissions.
1378
1379 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1382         call site patching code, it doesn't appear to be needed.
1383
1384 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1385
1386         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1387         sharing generic methods whose type arguments are a mix of reference and
1388         non-reference types. Not yet turned on.
1389
1390         * mini.c (mini_get_shared_method): New helper function to return
1391         the method which will be compiled/registered in the JIT tables when doing
1392         generic sharing.
1393         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1394         use mini_get_shared_method ().
1395
1396         * mini.c (mini_method_compile): Register the same method which is compiled when
1397         doing generic sharing.
1398
1399         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1400
1401         * generics.cs: Add partial sharing tests.
1402
1403 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1404
1405         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1406                    Add an enum value that or's all possable values together. Add an enum value
1407                    that marks the end of the used bit indexes.
1408
1409         * mini-amd64.c : Make changes to match the changes in mini.h 
1410
1411         * mini-x86.c : Make changes to match the changes in mini.h
1412
1413         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1414                    simd_version to support more simd versions. Changed the name of
1415                    simd_version to simd_version_flags to make it more intuitive that
1416                    it now contains bit flags. Reordered the *_intrinsics arrays to
1417                    match the changes above. Changed emit_intrinsics() to use the new
1418                    setup mentioned above.
1419
1420         Code is contributed under MIT/X11 license.
1421
1422 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1423
1424         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1425         remaining archs. Alpha and hppa maintainers, please stand up.
1426
1427 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1428
1429         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1430         is needed even when fail_tramp!=NULL.
1431
1432 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1433
1434         * debugger-agent.c (insert_breakpoint): Write a log message.
1435
1436 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1437
1438         * iltests.il.in: Add a few tests for LEAVE going over multiple
1439         finally clauses.
1440
1441 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1442
1443          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1444
1445 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1446
1447         * mini.h (MonoBasicBlock): Add native_length field.
1448         * mini.h (MonoCompile): Add try_block_holes field.
1449         * mini.h (MonoInst): Add exception_clause pointer to
1450         the data union.
1451
1452         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1453         * mini.c (mono_cfg_add_try_hole): New function to register possible
1454         holes in try blocks.
1455         * mini.c (create_jit_info): Fill in the holes information.
1456
1457         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1458         by a try block.
1459
1460         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1461
1462 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1463
1464         * jit-icalls.c: adjusted for the array API changes.
1465
1466 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1469
1470 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1471
1472         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1473         the 'pending' flag. This fixes support for appdomains too.
1474
1475
1476 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1477
1478         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1479
1480 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1481
1482         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1483         when using LLVM, LLVM generates it itself when needed.
1484
1485         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1486
1487         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1488         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1489         OP_ANDNPS/OP_ANDNPD.
1490
1491 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1492
1493         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1494         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1495         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1496
1497 2010-03-11  Martin Baulig  <martin@ximian.com>
1498
1499         * debugger-agent.c (type_commands): Add NULL check to
1500         `CMD_TYPE_GET_SOURCE_FILES'.
1501
1502 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1503
1504         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1505
1506 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1507
1508         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1509         #586664.
1510
1511         * iltests.il.in: Add a test.
1512
1513 2010-03-05  Martin Baulig  <martin@ximian.com>
1514
1515         Add support for aborting invocations.
1516
1517         * debugger-agent.c
1518         (InvokeData): Added `InvokeData *last_invoke'.
1519         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1520         added a new `invoke' field to keep the `InvokeData *' throughout
1521         the invocation.
1522         (ErrorCode): Added `ERR_NO_INVOCATION'.
1523         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1524         (mono_debugger_agent_handle_exception): Don't report any exception
1525         if an abort was requested.
1526         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1527         a thread abort if necessary.
1528         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1529
1530 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1531
1532         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1533         so we can release the whole list and not just the first one. Free
1534         it in more places as well.
1535
1536 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1537
1538         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1539
1540 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1541
1542         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1543
1544 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1545
1546         * driver.c: report also other misc build options.
1547
1548 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1549
1550         * method-to-ir.c: Generate better code for the NewObject
1551         intrinsic.
1552         
1553 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1554
1555         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1556         is disabled. Fixes #582322.
1557
1558         * iltests.il.in: Add a test.
1559
1560 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1563         the handling of obj->synchronization == null and owner != current thread to
1564         mono_monitor_exit ().
1565
1566         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1567
1568
1569 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1570
1571         * mini.c: change the way emulated opcode info is stored and save about
1572         4 KB of runtime memory.
1573
1574 2010-03-04  David S. Miller  <davem@davemloft.net>
1575
1576        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1577        that don't provide the siginfo in the second signal handler argument
1578        are buggy, and this has been fixed for years.
1579        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1580        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1581
1582 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * aot-runtime.c (find_symbol): Fix a leak.
1585         (decode_patch): Ditto.
1586
1587 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1588
1589         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1590
1591 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1594
1595 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1596
1597         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1598
1599 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1600
1601         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1602         to check for errors, it's enough to create the metadata open.
1603
1604         Fixes #562150
1605
1606 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1607
1608         * trace.c|h:
1609         * mini-exceptions.c: Add support for printing stack traces when handling
1610         exceptions, and when printing exceptions thrown while tracing also print
1611         the exception message.
1612
1613 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1614
1615         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1616         since the exclude token is a valid string character.
1617
1618 2010-03-02  Levi Bard  <levi@unity3d.com>
1619
1620         * debugger-agent.c: Invalidate thread stacks on domain unload.
1621
1622 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1623
1624         * method-to-ir.c: Emit dummy_use for stored reference after write
1625         barriers to make sure the object is pinned if the GC interrupts
1626         before the write barrier is done.
1627
1628 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1629
1630         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1631
1632 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1633
1634         * debugger-agent.c: Add a log message printing the protocol version.
1635
1636 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1637
1638         * debugger-agent.c: Add a new command to communicate the protocol version used
1639         by the client. This could be used to allow newer runtimes to communicate with
1640         older clients.
1641
1642 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1645
1646 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1649         type.
1650
1651 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1652
1653         * mini-arm.c: make the arm cpu arch configurable with the
1654         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1655         Bug #584198.
1656
1657 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1658
1659         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1660         support for the perf tool on Linux.
1661
1662 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1663
1664         * method-to-ir.c: make string.InsertenalSetChar() specialization
1665         effective.
1666
1667 2010-03-01  Robert Jordan  <robertj@gmx.net>
1668
1669         * Makefile.am: fix the non-static build.
1670
1671 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1672
1673         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1674         here.
1675
1676 2010-02-26  Robert Jordan  <robertj@gmx.net>
1677
1678         * tasklets.c (continuation_store): Return from an error condition
1679         immediately.
1680
1681 2010-02-26  Martin Baulig  <martin@ximian.com>
1682
1683         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1684
1685         * debug-mini.c
1686         (MonoDebuggerThreadInfo): Added `internal_flags'.
1687         (MonoDebuggerInternalThreadFlags): New enum.
1688         (_mono_debugger_throw_exception): Don't signal the debugger if a
1689         type abort was requested.
1690         (_mono_debugger_unhandled_exception): Likewise.
1691         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1692         (mono_debugger_runtime_invoke): If the debugger requested a thread
1693         abort during the invocation, reset it here.
1694
1695 2010-02-26  Martin Baulig  <martin@ximian.com>
1696
1697         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1698         instead of `MonoThread *'.
1699
1700 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1701
1702         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1703         code offsets table, as it is mostly sorted.
1704
1705 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1706
1707         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1708         Fixes #582991.
1709
1710 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1711
1712         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1713
1714 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1715
1716         * Makefile.am: build the new ABI version of the libmono library.
1717         * debugger-agent.c, mini.c: fix warnings with the new API.
1718         * jit.h: don't depend on glib.h being included.
1719
1720 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1723
1724 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1727         ThreadStatic variables.
1728
1729 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1730
1731         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1732         data is not freed yet. Fixes #582460.
1733
1734 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1737         event requests. Bump protocol minor version.
1738
1739 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1742
1743 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1746         #581950.
1747
1748         * iltests.il.in: Add a test.
1749
1750 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1751
1752         * mini.c (inline_method): Check for loader errors.
1753
1754 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1755
1756         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1757         instead of mono_method_get_header as it doesn't decode locals
1758         so the called method can have unresolved dependencies that will only
1759         be satisfied after the current method is JIT'd.
1760
1761         Fixes #550968.
1762
1763 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * basic.cs (test_0_div_opt): Speed this up a bit.
1766
1767 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1770
1771         * mini.c (mono_jit_create_remoting_trampoline): Call
1772         mono_create_specific_trampoline () instead of
1773         mono_arch_create_specific_trampoline ().
1774
1775         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1776
1777 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1780         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1781
1782         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1783
1784         * mini-amd64.c: Fix DISABLE_JIT support.
1785
1786 2010-02-20  Geoff Norton  <gnorton@novell.com>
1787
1788         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1789
1790 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1791
1792         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1793         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1794         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1795         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1796         handle_exception.
1797
1798 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1801         edx/ecx too. This is needed to support OP_SEQ_POINT.
1802
1803 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1806
1807         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1808
1809 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1810
1811         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1812         LLVM+AOT+exceptions, not enabled yet.
1813
1814 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1815
1816         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1817
1818 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1819
1820         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1821         xdebug info for these.
1822
1823         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1824         in a few places.
1825
1826         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1827         not used yet.
1828
1829 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1830
1831         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1832
1833 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1836         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1837
1838         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1839         for mtouch.
1840
1841 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1842
1843         * debugger-agent.c: handle incomplete reads and EINTR in
1844         recv()/send(). This could have been causing random
1845         disconnections.
1846
1847 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1850         points.
1851
1852         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1853         so they have small offsets. Fixes #566311.
1854
1855 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1856
1857         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1858
1859 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * mini-amd64.c: Remove the special casing of byref in a few places now that
1862         mini_type_get_underlying_type () handles it.
1863
1864         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1865         by returning native int. Fixes #577984.
1866
1867 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1870         a macro.
1871
1872         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1873         of putting the clause itself.
1874
1875         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1876
1877 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1880         might be unaligned.
1881
1882 2010-02-10  Geoff Norton  <gnorton@novell.com>
1883
1884         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1885
1886 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1887
1888         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1889         llvm methods too.
1890
1891         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1892         it is not an LLVM generated symbol.
1893
1894         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1895
1896         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1897         implementation in gshared mode because it causes regressions.
1898
1899         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1900
1901         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1902         should be done by the caller.
1903
1904         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1905
1906         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1907
1908         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1909         since mono_jit_info_table_find () doesn't do it anymore.
1910
1911         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1912         instead of mono_jit_info_table_find ().
1913
1914 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1917
1918         * aot-compiler.c (encode_method_ref): Update after the removal of
1919         mono_gc_get_managed_allocator_type ().
1920
1921         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1922         Fixes #564538.
1923
1924 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1925
1926         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1927         generic params as well.
1928         (handle_isinst): Ditto.
1929
1930         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1931         instead of always calling an icall.
1932
1933         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1934         computing the size of the got.
1935
1936         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1937         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1938         the assembly directive '.set' so it points to the first LLVM emitted method.
1939
1940 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1941
1942         * mini.c (mini_method_verify): Report the method which failed to verify.
1943
1944 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1945
1946         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1947         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1948         runtime MS verifier.
1949
1950 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1951
1952         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1953         #561962.
1954
1955 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * mini-llvm.c: Init the jit module only when first JITting.
1958
1959         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1960
1961         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1962
1963         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1964         replaced with the real got.
1965
1966         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1967
1968         * image-writer.c: Reduce the amount of #ifdefs a bit.
1969
1970         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1971         llvm on darwin/arm.
1972
1973         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1974
1975         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1976         global.
1977
1978 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1979
1980         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1981         (mono_llvm_emit_method): Fix unaligned stores too.
1982
1983         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1984         so async stack walks don't crash.
1985
1986 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1987
1988         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1989         was not patched if the callee needed an rgctx trampoline.
1990
1991 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1992
1993         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1994         vtable address in AOT code.
1995
1996 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1999         MonoInst's.
2000
2001 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2002
2003         * genmdesc.pl: remove dependency on external cpp.
2004
2005 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2008         using LLVM, its not needed, and abcrem can't handle it.
2009
2010 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2011
2012         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2013         it easier to group instructions and reduce duplication.
2014
2015 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2016
2017         * decompose.c: Move the array/soft float decompose routines here from
2018         method-to-ir.c.
2019
2020         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2021
2022 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2025         to tell LLVM that the got is constant, not used yet.
2026
2027         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2028
2029 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2030
2031         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2032         managed wrappers.
2033
2034 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * aot-compiler.c (add_wrappers): Commit the hack which generates
2037         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2038         custom attribute.
2039
2040 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2041
2042         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2043         a fault, only used by the LLVM backend.
2044
2045         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2046         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2047
2048         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2049         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2050
2051         * mini-llvm.c: Only generate volatile loads from load instructions which have
2052         the MONO_INST_FAULT flag set.
2053
2054 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2055
2056         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2057         64 bit platforms.
2058
2059 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2060
2061         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2062         sequence points. Fixes #571236.
2063
2064 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2065
2066         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2067         end of the appdomain unload process, after assemblies have been unloaded.
2068         Fixes #574842.
2069
2070 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2073         works.
2074
2075         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2076         Fixes #573988.
2077
2078 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2081
2082 2010-01-26  Geoff Norton  <gnorton@novell.com>
2083
2084         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2085         with struct marshalability.
2086
2087 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2088
2089         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2090         it supports class names as well.
2091
2092         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2093         needed by the GC map code.
2094
2095         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2096         flags if needed.
2097
2098         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2099         if cfg->init_ref_vars is set.
2100
2101         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2102         cfg->disable_initlocals_op_refs is set.
2103
2104         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2105         using liveness info if cfg->compute_precise_live_ranges is set.
2106
2107         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2108         volatile variables correctly. Add comments about the live ranges. Not enabled
2109         yet.
2110
2111 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2112
2113         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2114         0x2a into them in method prologs.
2115
2116         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2117
2118 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2119
2120         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2121         classes, since llvm is compiled with -fno-rtti.
2122
2123         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2124
2125         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2126         llvm does not require it.
2127
2128         * aot-runtime.c (load_method): Print the full name of the last aot method.
2129
2130 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2131
2132         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2133         thread has not fully started yet.
2134
2135 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2136
2137         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2138
2139 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2140
2141         * driver.c: Do not abort if LLVM is not supported, print a
2142         warning and add the information to the Mono JIT information.
2143
2144 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2145
2146         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2147         using explicit null checks.
2148
2149 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2150
2151         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2152         related code.
2153
2154         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2155         () in one place.
2156         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2157         its no longer needed.
2158
2159         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2160
2161         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2162         define for platforms still using it (s390). Get rid of the
2163         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2164
2165         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2166         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2167
2168         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2169         the caller pushed the arguments.
2170
2171         * mini-llvm.c: Enable throwing exceptions on x86.
2172
2173         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2174         "Thread (nil) may have been prematurely finalized" messages if this is called
2175         on a thread not registered with the runtime.
2176
2177         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2178
2179 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * jit-icalls.c (mono_array_new_3): New jit icall.
2182
2183         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2184
2185         * arrays.cs: Add a test for 3 dimensional arrays.
2186
2187 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2188
2189         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2190         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2191         used.
2192
2193         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2194         thrown on x86.
2195
2196         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2197
2198         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2199
2200         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2201
2202 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2203
2204         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2205           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2206
2207         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2208
2209         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2210
2211         Code is contributed under MIT/X11 license.
2212
2213 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2216
2217         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2218
2219         * mini.c (mini_method_compile): Set the new flag when running under the
2220         debugger.
2221
2222 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2223
2224         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2225         a ref/noref value + a global pin flag, so parts of stack frames can still be
2226         precisely marked even if they include stuff which needs pinning. Improve logging.
2227         Fix many bugs. Not enabled yet.
2228
2229         * gc-test.cs: Add a few tests.
2230
2231         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2232         the normal -v options. Avoid propagating liveness information through bblocks
2233         which end with a NOT_REACHED opcode.
2234
2235         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2236         after cfg has been freed.
2237
2238 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2239
2240         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2241         if a clause is skipped because it uses the exception object, since it could
2242         have caught the exception.
2243
2244         * exceptions.cs: Add a test.
2245
2246 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2247
2248        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2249
2250         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2251         ICollection<T> wrappers.
2252
2253 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2256
2257 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2258
2259         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2260         NOMAP32BIT or optimize_for_xen is set.
2261
2262 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2263
2264         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2265         mono_metadata_str_hash () instead.
2266
2267 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2268
2269         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2270         sizeof (void*).
2271
2272         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2273
2274 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2277         flag is set.
2278
2279         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2280         throwing code correctly.
2281
2282         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2283
2284 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2285
2286         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2287         ftnptrs created by us, handle RGCTX_FETCH correctly.
2288         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2289
2290         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2291         ftnptr added by mono_aot_get_named_code ().
2292
2293 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2294
2295         * mini-arm.c: Fix a few LLVM problems.
2296
2297         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2298
2299 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2300
2301         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2302         AOT compiling.
2303
2304 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2305
2306         * jit.h, method-to-ir.c: added ability to set the policy for
2307         inserting breakpoints from the break IL instruction or the
2308         Debugger.Break () API call.
2309
2310 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2311
2312         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2313         assemblies need to be eagerly loaded.
2314
2315 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2316
2317         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2318
2319 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2322         an argument which matches any exception.
2323
2324 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2325
2326         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2327         optimization if the called method is gshared and marshalbyref, since gshared
2328         methods can' have wrappers. Fixes #569390.
2329
2330         * generics.cs: Add a test.
2331
2332 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2335         callable from gdb.
2336
2337 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2340
2341 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2344         since it is not supported in win2000.
2345
2346 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2347
2348         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2349         error if loading an assembly fails.
2350         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2351
2352         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2353         if exists.
2354
2355         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2356         compiled methods.
2357
2358         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2359
2360         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2361         is not supported yet.
2362
2363         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2364
2365 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2366
2367         * method-to-ir.c: All types with variant arguments must fallback to the
2368         slow path. This makes cast of variant delegates work.
2369
2370         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2371         argument that is set to TRUE is the returned vtable slot is for a variant
2372         interface. Changed a g_print + g_assert_not_reached to a g_error.
2373
2374         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2375         a similar fashion of generic virtual methods.
2376
2377 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2378
2379         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2380         when cfg is null.
2381
2382         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2383         method using a variance aware function.
2384
2385         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2386
2387 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2388
2389         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2390         do an icall for now.
2391
2392 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2393
2394         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2395         If LLVM decides to set the code model to Large, reset it to Default.
2396
2397 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2398
2399         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2400         stripped binaries as well.
2401
2402 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2405         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2406
2407         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2408         reg.
2409
2410 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2411
2412         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2413         separate function.
2414
2415         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2416         as the type info to llvm.eh.selector.
2417         (exception_cb): Use the type info for filling out some fields of
2418         MonoJitExceptionInfo like the flags and the exception class. This is needed
2419         because the LLVM produced exception handling clauses might not match the original
2420         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2421
2422         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2423         separate function. Add an extra argument which returns the type infos
2424         corresponding to the exception clauses.
2425
2426         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2427         exception handling clauses.
2428
2429 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2430
2431         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2432         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2433         to fix an AOT case.
2434
2435 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2436
2437         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2438         internal assembly.
2439
2440 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2441
2442         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2443         llvm code.
2444
2445 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2446
2447         * mini.c (mini_method_compile): Verify the method before calling
2448         mono_compile_create_vars as this might crash since it uses method
2449         information.
2450
2451         Fixes #560196.
2452
2453 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2454
2455         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2456         one case if AOTing, since the class might not be a concrete class.
2457
2458 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2461         functions which are now defined in mempool-internals.h.
2462
2463         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2464
2465         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2466
2467 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2468
2469         * mini.c:
2470         * method-to.ir.c:
2471         * mini-*.c: Properly handle generic enums.
2472
2473         Fixes #566294
2474
2475 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2476
2477         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2478         in a few more places.
2479
2480 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2481
2482         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2483         nullable parameters. Fixes #567351.
2484
2485 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2486
2487         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2488
2489 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2492         mono_get_generic_context_from_code () call.
2493
2494         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2495
2496 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2499         needed.
2500
2501 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2502
2503         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2504         mono_method_get_signature returns NULL. Fix #567084
2505
2506 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2509         instead of once for each module.
2510
2511 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2512
2513         * debugger-agent.c (ss_start): Implement step over for the last sequence
2514         point in methods.
2515
2516         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2517         have the STEP_LOC flag set.
2518
2519         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2520         fails. Fixes #566689.
2521
2522 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * mini.c (mono_add_seq_point): New helper function.
2525         (mono_save_seq_point_info): New function to save sequence point info, extracted
2526         from mini_method_compile ().
2527
2528         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2529
2530         * mini.h (MonoSeqPointInfo): New structure containing information about
2531         the sequence points of a JITted method.
2532         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2533         'bucket' field.
2534
2535         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2536         point information is stored, use a MonoSeqPointInfo structure instead of a
2537         GPtrArray. For each seq point, compute a list of successor seq points.
2538
2539         * debugger-agent.c: Use the successor list to implement step-over more
2540         efficiently: instead of single stepping until a different line/IL offset is
2541         reached, place breakpoints into all successor seq points.
2542
2543         * mini.h: Bump AOT file format version.
2544
2545 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2546
2547         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2548
2549         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2550
2551 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2552
2553         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2554         build.
2555
2556 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2557
2558         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2559         alloca as g_malloc is not signal safe.
2560
2561 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2562
2563         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2564         VALGRIND_DISCARD_TRANSLATIONS.
2565
2566         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2567         checks, they are no longer needed.
2568
2569         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2570         a function into a sigctx which can handle function pointers.
2571
2572         * mini-ppc.c: Implement soft debugger support on ppc64.
2573
2574         * mini-ppc.c: Implement soft debugger support.
2575
2576 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2577
2578         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2579
2580 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2581
2582         * mini.c (mono_get_runtime_build_info): include Mono version in
2583         the returned value.
2584
2585         * driver.c (mono_main): VERSION is now included in the string
2586         returned from mono_get_runtime_build_info()
2587
2588 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2589
2590         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2591         signatures. Fixes #565143.
2592
2593         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2594
2595 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2596
2597         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2598
2599 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2600
2601         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2602         making max stack 10x smaller.
2603
2604 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2605
2606         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2607
2608 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2609
2610         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2611
2612 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2613
2614         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2615         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2616
2617         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2618
2619         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2620
2621         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2622
2623         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2624         the compilation.
2625
2626 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2627
2628         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2629         raise an invalid program exception.   
2630
2631         For other opcodes that we might not handle use a g_warning and
2632         raise the exception.   Beats termination.
2633
2634         Fixes #561724
2635
2636 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2637
2638         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2639
2640         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2641         by merging the LLVM and !MAP_32BIT cases.
2642
2643 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2644
2645         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2646         sigctx being passed in, as we have no CONTEXT available in the APC.
2647
2648         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2649         for now.
2650
2651         Code contributed under MIT/X11 license.
2652
2653 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2656         in the LLVM backend on AMD64.
2657
2658         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2659         FDE.
2660
2661         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2662
2663         * mini-llvm.c: Export mono_personality for AOT.
2664
2665         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2666
2667         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2668         implicit exception can occur.
2669
2670         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2671         OP_IMPLICIT_EXCEPTION instruction.
2672
2673         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2674
2675         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2676
2677         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2678         inside a protected block.
2679
2680         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2681         trampolines doesn't include the argument.
2682
2683         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2684         trampolines on amd64.
2685
2686         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2687         of RDI.
2688
2689         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2690         disabled for methods with clauses.
2691
2692         * mini-llvm.c: Enable support for catch clauses.
2693
2694         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2695         end of an LLVM compiled finally clause.
2696         (mono_handle_exception_internal): Save the exception handling state in TLS
2697         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2698         resume unwinding from that point.
2699
2700         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2701         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2702         to obtain the addresses of the exception handling regions.
2703
2704         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2705         finally clauses are supported.
2706
2707         * mini.c (mini_method_compile): Add support for LLVM code with exception
2708         handlers.
2709
2710 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2711
2712         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2713         proper size.
2714
2715 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2718         as a primitive type.
2719
2720 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2721
2722         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2723         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2724         #564000.
2725
2726 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2727
2728         * method-to-ir.c (mini_redirect_call): do not redirect the
2729         InternalAllocateStr internal call if string profiling is enabled.
2730
2731 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2734         generic methods.
2735
2736         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2737         unwind.h header file.
2738
2739         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2740         newer valgrind versions seems to handle this fine.
2741
2742 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2743
2744         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2745         on the debugger thread.
2746
2747 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2748
2749         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2750
2751         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2752
2753         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2754
2755         * cpu-<ARCH>.md: Make call_handler clob:c.
2756
2757         * mini.c: Reenable SSA for methods with clauses.
2758
2759         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2760         as it causes failures on x86.
2761
2762 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2763
2764         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2765         returns NULL (e.g. a bad assembly).
2766
2767 2009-12-08  Geoff Norton  <gnorton@novell.com>
2768
2769         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2770         stepping out into native code.  There were issues with nested invokes
2771         like .cctors.
2772
2773 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2774
2775         * mini.c (mini_method_compile): Do the disable_llvm checks early
2776         and avoid the LLVM compile pass if the checks fail.
2777
2778         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2779
2780         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2781         LLVM optimizations don't try to remove them.
2782
2783         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2784         different file so the original remains.
2785
2786 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2789
2790         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2791
2792         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2793         support for non-inline unwind descriptors.
2794
2795 2009-12-07  Geoff Norton  <gnorton@novell.com>
2796
2797         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2798         the interrupt_count slightly differently.  Native threads were never
2799         marked as resumed.
2800
2801 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2804         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2805         yet generate this info.
2806
2807         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2808
2809         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2810         client can distinguish between intptrs and longs.
2811
2812 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2813
2814         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2815         blob.
2816
2817         * aot-runtime.c (load_function): Update after the change above.
2818
2819         * mini.h: Bump AOT file format version.
2820
2821         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2822         if the delegate class is dynamic.
2823
2824         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2825         in gshared code too using the new rgctx info type
2826         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2827
2828 2009-12-04  Geoff Norton  <gnorton@novell.com>
2829
2830         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2831         we need to track the original suspend count so the thread properly
2832         wakes up in resume_thread.
2833
2834 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2835
2836         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2837         code.
2838
2839         * generics.cs: Add a test.
2840
2841         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2842         is 0. Simplify a lot of code using this.
2843
2844         * mini-trampolines.c (mono_delegate_trampoline): Call
2845         mono_create_static_rgctx_trampoline () before saving the final address in
2846         delegate->method_code, to avoid calling it each time a delegate is first called.
2847
2848         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2849         which need static rgctx trampolines.
2850
2851         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2852         keyed on the method+addr pair, since addr could be either the method addr or
2853         an unbox trampoline in the AOT case. Fixes #560246.
2854
2855 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2858         place it was called before too.
2859
2860 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2861
2862         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2863         if no security manager is present, to speed up the AOT case. Call
2864         mono_class_vtable () full with raise_on_error == TRUE instead.
2865
2866 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2869         the local optimization passes can take its result into account. Fixes
2870         #559876.
2871
2872         * exceptions.cs: Add a test.
2873
2874 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2875
2876         This patch is contributed under the terms of the MIT/X11 license
2877
2878         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2879
2880 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2883
2884         * debugger-agent.c: Rework the handling of stack traces of running threads to
2885         avoid crashes if compute_frames () tries to walk the stack of running thread.
2886
2887         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2888
2889         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2890
2891         * mini.h (StackFrameInfo): Add an 'lmf' field.
2892
2893 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * debugger-agent.c (suspend_current): Always set really_suspended.
2896
2897         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2898
2899         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2900
2901 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2902
2903         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2904         really suspended.
2905
2906 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2909
2910 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2911
2912         * mini-trampolines.c: Fix MSVC build.
2913
2914 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2915
2916         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2917
2918 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2921         the instruction following an OP_FCOMPARE is optimized away.
2922
2923 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2926         emit_autoreg () into this arch-specific function.
2927
2928         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2929         code, it is no longer needed.
2930
2931         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2932
2933         * mini.h: Bump AOT file format version.
2934
2935         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2936         using the sorted_code_offsets array, instead of reading it from the
2937         exception debug info.
2938         (load_method): Call mono_aot_find_jit_info instead of
2939         decode_exception_debug_info ().
2940
2941         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2942         LLVM compiled as a flag.
2943
2944 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2945
2946         * debugger-agent.c (resume_thread): Fix a warning.
2947
2948         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2949         generated.
2950
2951 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2952
2953         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2954         contents to MonoAotFileInfo.
2955
2956 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2957
2958         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2959         Put all binary data into a giant blob, similarly to the way .net assemblies
2960         store binary data. Emit offset tables in a compact form to reduce their size.
2961
2962         * mini.h: Bump AOT file format version.
2963
2964         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2965         places.
2966
2967         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2968         avoid linear searches at runtime.
2969
2970         * aot-runtime.c (find_symbol): Update this to use the hash.
2971
2972         * mini.h: Bump AOT file format version.
2973
2974 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2975
2976         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2977         container.
2978
2979         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2980         too.
2981
2982         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2983         the distribution of got slot types.
2984
2985         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2986
2987         * method-to-ir.c: Add support for generating explicit null checks.
2988
2989 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2992         on a random thread if possible.
2993
2994         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2995         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2996         correctly.
2997
2998         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2999         regs. Pass the real size of the regs array to mono_unwind_frame ().
3000
3001         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3002         ones instead.
3003
3004 2009-11-24  Geoff Norton  <gnorton@novell.com>
3005
3006         * mini-darwin.c: Work around apple bug rdar://7209349  See
3007         http://openradar.appspot.com/7209349 for details.  Synopsis,
3008         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3009         never been initialized before.
3010
3011 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3014
3015         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3016
3017 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3018
3019         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3020         OP_SHL_IMM is not 32 bit.
3021
3022 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3023
3024         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3025
3026 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3029         encountered.
3030
3031         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3032         > 0 since some threads can resume if their resume_count is > 0.
3033         (invoke_method): Avoid reading freed memory.
3034
3035         * debugger-agent.c (process_suspend): Extract the suspend code from
3036         process_single_step_inner () to a separate function. Rework the code to prevent
3037         races between this function and thread interrupts.
3038
3039         * debugger-agent.c (suspend_current): Check the resume_count field instead
3040         of resume_one so suspends+resumes during single threaded invokes work
3041         correctly.
3042
3043 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3046         to make the generated code smaller.
3047
3048         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3049         sequence generated by recent LLVM versions.
3050
3051         * mini-llvm.c: Add support for a few simple cases which weren't supported
3052         before.
3053
3054         * mini-trampolines.c (mono_magic_trampoline): Don't call
3055         mono_arch_get_vcall_slot () when llvm is enabled.
3056
3057         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3058
3059         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3060         into a new function called common_call_trampoline () which is used by the
3061         llvm vcall trampoline as well.
3062
3063         * debugger-agent.c: Implement single threaded invokes.
3064
3065         * debugger-agent.c: Revert change which broke the agent on linux.
3066
3067         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3068         #557606.
3069
3070         * generics.cs: Add a test.
3071
3072 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3073
3074         * debugger-agent.c: Fix the cygwin build.
3075
3076 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * cprop.c: Remove this unused file.
3079
3080 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3083         #557262.
3084
3085         * basic.cs: Add a test.
3086
3087 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3088
3089         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3090         in one more place.
3091
3092 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3093
3094         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3095         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3096         it. Use this flag to control llvm related code paths instead of #ifdef
3097         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3098         AOT code.
3099
3100         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3101
3102         * mini.h: Bump AOT file format version.
3103
3104         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3105         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3106
3107         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3108         was used as an assembly filter.
3109
3110 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3111
3112         * unwind.c: Fix support for ppc.
3113
3114         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3115         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3116
3117 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3118
3119         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3120         port.
3121         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3122         added by the ps3 changes.
3123
3124 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * mini-gc.c: Resurrect this, so at least it compiles.
3127
3128         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3129
3130 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3131
3132         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3133         create_event_list () so assembly filters can be used.
3134
3135         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3136         from the LMF.
3137
3138 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3139
3140         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3141         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3142         is disabled.
3143
3144         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3145         classes for char/bool too.
3146
3147         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3148
3149         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3150         used.
3151
3152         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3153         Fix warnings.
3154
3155 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3156
3157         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3158         
3159         Code contributed under MIT/X11 license.
3160
3161 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3162
3163         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3164         threads in native code work.
3165
3166         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3167         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3168         version.
3169
3170 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3171
3172         * debugger-agent.c: Implementation for Windows platform.
3173
3174         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3175         primitives. Use SEH to implement breakpoints and single stepping.
3176
3177         * mini-x86.h: Enable soft debugger on Windows.
3178
3179         Code contributed under MIT/X11 license.
3180
3181 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3182
3183         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3184         under XEN. Fixes #522894.
3185
3186         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3187
3188         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3189         interface calls in LLVM AOT code.
3190
3191         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3192         is found.
3193
3194         * mini-llvm.c: Add support for OP_VPHI.
3195
3196         * objects.cs: Add a test.
3197
3198 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3201         this is called on the debugger thread.
3202
3203 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3204
3205         * mini-llvm.c: Add soft-float support.
3206
3207         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3208         FCALL which returns an R4.
3209
3210         * driver.c (mono_main): Add a missing '\n'.
3211
3212         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3213         platforms which doesn't support the LLVM IMT trampoline.
3214
3215 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3216
3217         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3218
3219         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3220
3221         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3222         virtual calls.
3223
3224         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3225
3226 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3229         Instead of emitting a method_order table, sort the contents of the code_offsets
3230         table and do a binary search in the sorted table. The previous approach doesn't
3231         work with LLVM which emits methods in a arbitrary order.
3232
3233         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3234         in the .eh_frame section in ELF files.
3235
3236         * mini.h: Bump corlib file format version.
3237
3238         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3239
3240         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3241         LDMIA->LDM macro name change.
3242
3243 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3244
3245         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3246         x86.
3247
3248         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3249         SVN.
3250
3251         * aot-compiler.c: Ditto.
3252
3253         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3254         &align to mini_type_stack_size_full ().
3255
3256         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3257
3258         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3259
3260 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3261
3262         * mini-arm.c: Compute the stack space used by arguments using
3263         mini_type_stack_size_full ().
3264
3265 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3266
3267         * optflags-def.h: Remove dead TREEPROP optimization.
3268
3269 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3270
3271         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3272
3273         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3274
3275 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * driver.c (mono_jit_parse_options): New public API function to parse options
3278         as done by the runtime executable.
3279
3280         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3281         when handling named arguments.
3282
3283 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3286         for passing small vtypes in registers, make the CallInfo structures more
3287         similar to the code on the other platforms.
3288
3289         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3290         the code in the prolog requires it.
3291
3292 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3293
3294         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3295         (koush@koushikdutta.com).
3296
3297         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3298         where the thunk memory should be allocated from. Fixes appdomain unloading
3299         on arm.
3300
3301 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3302
3303         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3304         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3305
3306 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3307
3308         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3309         AOT, as it is not implemented yet.
3310
3311         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3312
3313 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3314
3315         * debugger-agent.c: Fix windows build.
3316
3317 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3318
3319         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3320         after the client connects/disconnects.
3321
3322         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3323         when an exception of a given type is thrown.
3324
3325         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3326         only on an uncaught exception.
3327
3328         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3329
3330         * debugger-agent.c: Add a 'launch' option.
3331
3332 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3333
3334         * debugger-agent.c: Add a 'timeout' option.
3335
3336 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3337
3338         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3339         the JDWP agent.
3340
3341 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3342
3343         * debugger-agent.c (set_breakpoint): Emit a log message.
3344
3345 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3346
3347         * mini-arm.c: Fix the arm build.
3348
3349 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3350
3351         * aot-compiler.c: don't leak the value returned from
3352         mono_type_full_name().
3353
3354 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3355
3356         * debugger-agent.c: defer including mono-mutex.h until we know the
3357         agent is supported.
3358
3359 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3360
3361         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3362         of pthreads directly.
3363
3364         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3365         exception handlers. Pass info argument.
3366
3367         * mini.h: Adjust signatures of soft debugger functions to pass void*
3368         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3369
3370         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3371         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3372         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3373         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3374
3375         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3376
3377         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3378         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3379         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3380         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3381
3382         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3383
3384         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3385
3386         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3387
3388         * mono-semaphore.h: Skeleton implementation for Windows.
3389
3390         Code contributed under MIT/X11 license.
3391
3392 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3393
3394         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3395
3396         Code contributed under MIT/X11 license.
3397
3398 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3399
3400         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3401
3402         Code contributed under MIT/X11 license.
3403
3404 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3405
3406         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3407         debug info to 100 because 10 still slows down gdb too much.
3408
3409         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3410         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3411         them in the wrappers.
3412
3413 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3416
3417         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3418
3419         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3420         function mono_aot_get_array_helper_from_wrapper ().
3421
3422         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3423         array helper methods.
3424
3425 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3426
3427         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3428         the value was loaded from memory.
3429
3430         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3431         the value was loader from there.
3432
3433         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3434         without constant swizzle.
3435
3436 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3437
3438         * mini-amd64.c: Put soft debugger functions behind a
3439         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3440
3441         * mini-amd64.h: disable the soft debugger in windows.
3442
3443         Code contributed under MIT/X11 license.
3444
3445 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3446
3447         * mini-x86.c: Put soft debugger functions behind a
3448         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3449
3450         Code contributed under MIT/X11 license.
3451
3452 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3453
3454         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3455         to mono_arch_find_jit_info_ext.
3456
3457         Code contributed under MIT/X11 license.
3458
3459 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3460
3461         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3462
3463         * debugger-agent.c: Add support for filtering events by assemblies.
3464
3465         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3466         the agent is not enabled.
3467
3468 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3469
3470         * exceptions-x86.c: hopefully last change to fix the windows build.
3471         This one courtesy of Jonathan Chambers.
3472
3473 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3474
3475         * debugger-agent.c: remove unused function.
3476
3477 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3478
3479         * debugger-agent.c: add #ifdefs for a few header files.
3480         * mini-x86.h: disable the soft debugger in windows.
3481         Step 1 of 2 to make this compile on windows with gcc.
3482
3483 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3484
3485         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3486         as it breaks the build.
3487
3488 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3489
3490         Merge the soft debugger branch.
3491
3492         * debugger-agent.h debugger-agent.c: New files containing the soft
3493         mode debugger module.
3494
3495         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3496         at the appropriate locations.
3497
3498         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3499         opcode.
3500
3501         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3502         enable/disable single stepping.
3503
3504         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3505         which returns all information in a StackFrameInfo structure, and can handle the
3506         LMF frames added by the debugger.
3507
3508         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3509         about an LMF frame.
3510
3511         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3512         walker function which works on a specific thread and passes a StackFrameInfo
3513         structure to its callback.
3514
3515         * mini.c (mini_init): Initialize the debugger agent.
3516
3517         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3518
3519         * mini-ops.h: Add OP_SEQ_POINT opcode.
3520
3521         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3522         arguments to the debugger agent.
3523
3524 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3525
3526         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3527         speed things up.
3528
3529         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3530
3531         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3532
3533         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3534
3535         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3536         if needed.
3537         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3538         sets the IMT argument and makes a virtual call.
3539
3540         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3541
3542 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3543
3544         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3545         the windows build.
3546
3547 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3550         runtime. Fixes #551228.
3551
3552 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3555
3556         * basic.cs: Add a test.
3557
3558         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3559         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3560         CONSTRAINED. Fixes #550964.
3561
3562         * generics.cs: Add a test.
3563
3564 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3565
3566         * mini-posix.c (add_signal_handler): Use
3567         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3568
3569 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3570
3571         Contributed under the terms of the MIT/X11 license by
3572         Jerry Maine <crashfourit@gail.com>.
3573
3574         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3575         sse4a for simd intrinsics.
3576
3577         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3578         sse4a for simd intrinsics.
3579
3580 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3581
3582         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3583         instead of inst_p1 which is not the same on ILP32 platforms.
3584
3585 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3586
3587         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3588         not the mscorlib one before calling mono_get_lmf_addr.
3589
3590         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3591         of the ip to the LMF.
3592
3593         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3594         immediate in the op->op_imm optimization.
3595
3596         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3597         understand. VTypes now work, but are not abi compliant, as they are
3598         split into 4 byte parts instead of 8.
3599         (emit_memcpy): Fix the unrolled case to work on the PS3.
3600
3601         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3602
3603         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3604         the default when static linking.
3605
3606         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3607
3608         * aot-compiler.c: Add an autoreg option to automatically register
3609         statically linked aot modules using ELF .ctors.
3610
3611         * genmdesc.pl: Add __ppc64__ to allowed defines.
3612
3613 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3614
3615         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3616         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3617
3618 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3619
3620         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3621
3622 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3623
3624         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3625         which will contain the domain where the method was found.
3626
3627         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3628         mini_jit_info_table_find ().
3629
3630         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3631
3632         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3633
3634 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3635
3636         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3637         set, its not supported yet.
3638
3639 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3642         iface wrapper is not found.
3643         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3644
3645 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3648         which have a different name.
3649
3650         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3651         wrappers and Array.GetGenericValueImpl ().
3652
3653         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3654         because of the change above.
3655
3656         * generics.cs: Add a test for full aot + generic array ifaces.
3657
3658 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3659
3660         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3661         that hides the previous one.
3662
3663 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3664
3665         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3666         marshalled. Fixes #541623.
3667
3668 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3669
3670         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3671
3672 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3673
3674         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3675
3676 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3677
3678         * mini-posix.c (sigprof_signal_handler):
3679         Implemented support for building stat call chans in different ways.
3680
3681 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3682
3683         * mini-exceptions.c (mono_find_jit_info):
3684         Also check that a jit info has been found (fixes a profiler crash).
3685
3686 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3687
3688         * mini.c (mono_codegen):
3689         Call mono_profiler_code_buffer_new with correct code address.
3690
3691 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * driver.c (mono_main): Change the date in the copyright.
3694
3695 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3696
3697         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3698         allocator in shared generic code for open classes, because we
3699         can't get those classes' vtables.  We need to make managed
3700         allocators not depend on the vtable at compile-time to solve this.
3701
3702 2009-10-13  Martin Baulig  <martin@ximian.com>
3703
3704         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3705         `const guint8 *trampoline' argument; send both the old and the new
3706         notification.
3707
3708 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3709
3710         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3711         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3712         (can_marshal_struct): Skip structures with auto layout.
3713
3714         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3715
3716 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3717
3718         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3719         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3720         a variable to hold the stack slot used by the int<->float conversion opcodes.
3721
3722         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3723
3724 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3725
3726         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3727         when using full-aot.
3728
3729 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3732         each instance of Comparer<T>.
3733
3734         * generics.cs: Add a new test.
3735
3736 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3737
3738         * driver.c (parse_debug_options): Add a 'gdb' option.
3739
3740         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3741
3742         * image-writer.c: Add support for emitting the image into a memory buffer.
3743
3744         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3745
3746         * aot-compiler.c: Add support for registering debug info with GDB using the
3747         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3748         MONO_XDEBUG to 'gdb'.
3749
3750 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3751
3752         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3753         gdb mode.
3754
3755 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3756
3757         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3758         can be used to set breakpoints in gdb.
3759
3760         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3761         segment to an absolute address.
3762
3763 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3764
3765         * method-to-ir.c: Use the managed array allocator method if
3766         available.
3767
3768 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3769
3770         * aot-compiler.c : Fix the MSVC builds
3771
3772         Code is contributed under MIT/X11 license.
3773
3774 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3775
3776         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3777         avoid registering 1 symbol file per method with gdb.
3778
3779 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * mini-sparc.c: Fix the handling of enums with base type long.
3782
3783         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3784
3785         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3786         instead of using type->data.klass as the later doesn't work with generics.
3787
3788 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3789
3790         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3791         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3792         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3793         works differently now and we don't handle it in the JIT anymore.
3794
3795         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3796         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3797         the Thread class split.
3798
3799 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3800
3801         * driver.c: Don't run tests with the obsolete treeprop optimization.
3802
3803         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3804         variable volatile. Fixes #541577.
3805
3806         * basic-calls.cs: Add a new test.
3807
3808         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3809
3810 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3813         work/required with recent iphone sdk versions.
3814
3815         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3816         structures.
3817
3818         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3819         in the VCALL decomposition code.
3820
3821 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3822
3823         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3824
3825         * basic.cs: Add a test.
3826
3827         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3828         generic invokes.
3829
3830         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3831         searches all the domains of the current thread.
3832
3833         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3834
3835 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3836
3837         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3838         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3839
3840         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3841         for non-jit trampolines.
3842
3843         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3844
3845         * aot-compiler.c (add_wrappers): Ditto.
3846
3847         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3848         the size of the param area used by dyn_call to 6 which covers the majority of
3849         methods.
3850
3851         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3852
3853         * mini-arm.c: Implement support for passing/receiving
3854         longs and receiving floats in the dyn_call code.
3855
3856         * mini-amd64.c: Implement support for receiving vtypes in registers in
3857         the dyn_call code.
3858
3859         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3860         the dyn_call code.
3861
3862 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * mini-arm.c (get_call_info): Return more precise information in
3865         ArgInfo->regtype.
3866         (dyn_call_supported): Use the information in CallInfo.
3867
3868         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3869
3870         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3871         code.
3872
3873         * mini-arm.c: Update after the dyn_call api changes.
3874
3875         * mini.c (mini_create_jit_domain_info): Register a destructor function
3876         for the runtime_invoke_hash.
3877
3878         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3879         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3880         this function.
3881         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3882         (dyn_call_supported): Simplify this by using get_call_info ().
3883         (mono_arch_dyn_call_free): New destructor function.
3884
3885         * generics.cs: Remove a printf.
3886
3887         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3888
3889         * mini-arm.c: Add support for enum return values and passing a few arguments
3890         on the stack.
3891         
3892         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3893         dyn invoke.
3894
3895         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3896
3897         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3898         the dynamic invoke wrappers.
3899
3900         * mini-arm.c: Implement OP_DYN_CALL for arm.
3901
3902         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3903         supported by the dynamic runtime invoke wrapper.
3904
3905         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3906         runtime invoke wrapper.
3907
3908         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3909         if possible when running with full-aot.
3910
3911         * mini-ops.h: Add OP_DYN_CALL opcode.
3912
3913         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3914         with dynamic arguments lists similar to libffi.
3915
3916 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3917
3918         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3919         
3920         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3921         to NEWARR.
3922
3923         * iltests.il.in: Add a new test.
3924         
3925 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3926
3927         * aot-compiler.c (add_generic_instances): Add more instances of
3928         GenericEqualityComparer.
3929
3930 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3931
3932         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3933
3934 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3935
3936         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3937         comments on some functions that now can fail.
3938
3939 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3940
3941         * Makefile.am: Add Info.plist to EXTRA_DIST
3942
3943 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3946         static synchronized wrappers. Fixes #539500.
3947
3948 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3949
3950         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3951         properly.
3952
3953 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3954
3955         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3956         lmf before calling filter clauses as well. Fixes #539550.
3957
3958         * exceptions.cs: Add a test.
3959         
3960 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * aot-compiler.c (add_generic_class): Add instances of
3963         Array.GetGenericValueImpl as well.
3964
3965         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3966         can be tested too.
3967
3968         * generics.cs: Add a fullaot linq test.
3969
3970 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3971
3972         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3973         reg r1 on arm.
3974
3975 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3976
3977         * mini-trampolines.c (mono_delegate_trampoline) : Call
3978           mono_cominterop_get_invoke if the delegate target object
3979           is a COM object.
3980
3981         Code is contributed under MIT/X11 license.
3982
3983 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3984
3985         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3986         internal call is defined outside platform code. Reduce code 
3987         duplication with existing [Method|Field]AccessException
3988
3989 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3990
3991         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3992         if the return value is a small struct passed on regs.
3993
3994 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3995
3996         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3997
3998         * mini-codegen.c: Enable the cpu description validation for arm.
3999
4000 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4001
4002         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4003         test which depends on structs to objects.cs.
4004         
4005         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4006         require object model related stuff working.
4007
4008         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4009
4010         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4011
4012         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4013         against the instruction metadata in mini-ops.h. amd64 only for now.
4014
4015         * mini-ops.h: Fix some instruction descriptions.
4016
4017         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4018         unused instructions.
4019
4020 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4021
4022         * exceptions.cs: Add a new test.
4023
4024 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4025
4026         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4027
4028 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4029
4030         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4031         skip empty phi opcodes.
4032         
4033         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4034         correctly by zero extending after loads. Skip methods containing calls
4035         to the monitor enter/exit trampolines.
4036
4037         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4038         when calling mono_thread_force_interruption_checkpoint ().
4039
4040         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4041
4042         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4043         64 bit thunks.
4044         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4045
4046         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4047         bootstrap could run.
4048
4049 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4052
4053 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4054
4055         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4056         of the method to
4057         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4058         LLVM might be very short.
4059
4060         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4061         in OP_THROW/RETHROW.
4062
4063         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4064         alignment on osx.
4065
4066 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4067
4068         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4069         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4070         LLVM might be very short.
4071
4072 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4073
4074         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4075         the alignment for the value of sp.
4076
4077 2009-09-01  Geoff Norton  <gnorton@novell.com>
4078
4079         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4080         managed wrappers in full aot.
4081
4082 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4083
4084         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4085
4086 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4089
4090 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4093
4094         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4095         saved info.
4096
4097         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4098
4099         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4100         depend on the info MonoMethodHeader which could be missing in IL stripped
4101         assemblies.
4102
4103 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4104
4105         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4106         they are only 4 byte aligned.
4107
4108 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4111         was done previously, since using SP causes too many problems.
4112
4113         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4114         frames without a frame pointer works.
4115
4116         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4117         global register in methods with calls, since the calls can go through
4118         a static rgctx trampoline which doesn't save it.
4119
4120 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4123
4124 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4125
4126         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4127
4128 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4129
4130         * method-to-ir.c: Fix warnings for uninitialized variables.
4131
4132 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4133
4134         * mini-exceptions.c:
4135         * aot-compiler.c: Fix printf warnings.
4136
4137 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4138
4139         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4140         Add GetGenericValueImpl<string>.
4141         
4142         * aot-compiler.c (add_generic_instances): Add instances of
4143         GenericEqualityComparer<T> for primitive types. Only emit the array
4144         wrappers into the mscorlib image.
4145
4146 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4149         the methods_loaded array using amodule->info->nmethods.
4150
4151         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4152         (MONO_AOT_FILE_VERSION): Bump this.
4153
4154         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4155         to work.
4156
4157         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4158         MonoJitInfo doesn't belong to its methods aot image.
4159
4160 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4161
4162         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4163
4164         * mini-arm.c: Fix warnings.
4165         
4166         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4167
4168         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4169         supports it.
4170
4171 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4172
4173         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4174         avoid clobbering IP.
4175
4176         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4177         hold the trampoline argument, so its initial value is available during
4178         debugging.
4179
4180 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4181
4182         * exceptions-arm.c:
4183         * exceptions-hppa.c:
4184         * mini.c:
4185         * exceptions-s390x.c:
4186         * exceptions-mips.c:
4187         * exceptions-ppc.c:
4188         * exceptions-sparc.c:
4189         * exceptions-alpha.c:
4190         * aot-runtime.c:
4191         * mini-trampolines.c:
4192         * exceptions-x86.c:
4193         * exceptions-s390.c: add and use #define's instead of sizeof()
4194         for MonoJitInfo and MonoJitInfoTable.
4195
4196 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4197
4198         * tramp-arm.c:
4199         * tramp-amd64.c:
4200         * tramp-ppc.c:
4201         * tramp-x86.c: use a #define instead of sizeof() for a few
4202         structures that use a zero-length array.
4203
4204 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4205
4206         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4207         case when the method is dynamic. Fixes #529238.
4208
4209 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4212         of asserting when a method is JIT compiled in full-aot mode.
4213
4214 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4215         
4216         Contributed under the terms of the MIT/X11 license by
4217         Jerry Maine <crashfourit@gail.com>.
4218         
4219         * fixed wrong dates in changelog.
4220
4221 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4222         
4223         Contributed under the terms of the MIT/X11 license by
4224         Jerry Maine <crashfourit@gail.com>.
4225
4226         * basic-simd.cs: added test for packed double square root.
4227         * cpu-amd64.md: added opcode info for packed double square root.
4228         * cpu-x86.md: added opcode info for packed double square root.
4229         * mini-ops.h: added IR opcode for packed double square root.
4230         * mini-x86.c: added IR to native translation code for packed double square root.
4231         * mini-amd64.c: removed todo for packed double square root.
4232         * simd-intrinsics.c: added method to IR opcode converstion for
4233         packed double square root.
4234
4235 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4236
4237         Contributed under the terms of the MIT/X11 license by
4238         Jerry Maine <crashfourit@gail.com>.
4239
4240         * mini-amd64.c: Added a change to help tell the difference as 
4241         to what perpose the xmm register is being used--mainly to help
4242         with debuging.
4243         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4244         (one used for special cases) xmm registers for both fp
4245         and simd ops. Added define to turn on new feature in the regalloc
4246         that allows fp and simd ops to share the xmm regs happily.
4247         * codegen.c: Added code to detect for which perpose an xmm reg is
4248         being used (fp or simd) and to translate back and forth to the
4249         correct logical reg bank (fp or simd) for 'spill load's.
4250
4251 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4252
4253         Contributed under the terms of the MIT/X11 license by
4254         Jerry Maine <crashfourit@gail.com>.
4255
4256         * basic-simd.cs: Added tests for stressing the regalloc when running with
4257         16 simd regs and when simd and fp ops share the same reg bank.
4258
4259 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4260
4261         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4262         in shared generic code, we might have to look up the class in the
4263         RGCTX.  If we use the class directly, compute its GC descriptor.
4264
4265 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4266
4267         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4268
4269 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4270
4271         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4272         check for errors. Fixed the case when the class with the Main
4273         method is broken.
4274
4275 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4276
4277         Contributed under the terms of the MIT/X11 license by
4278         Jerry Maine <crashfourit@gail.com>.
4279
4280         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4281
4282 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4283
4284         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4285
4286 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4287
4288         * method-to-ir.c: Fix naming of stelem and ldelem.
4289
4290 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4291
4292         * driver.c (main_thread_handler): Check that the assembly loaded
4293         matches the filename when doing AOT.
4294
4295 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4296
4297         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4298         call it anymore.
4299
4300         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4301         utils/mono-sigcontext.h).
4302
4303         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4304         #ifdef.
4305
4306 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4307
4308         * mini.c (mono_codegen):
4309         Call profiler hook to keep track of method code buffers.
4310
4311 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4312
4313         * method-to-ir.c: Invoke write barriers for the
4314         Interlocked.(Compare)Exchange JIT intrinsics.
4315
4316 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4317
4318         * Makefile.am (version.h): Fix issues when built out of tree.
4319         Remove some redundant 'grep's piped through 'sed's.
4320
4321 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4322
4323         This patch is contributed under the terms of the MIT/X11 license
4324
4325         * mini-ppc.c (mono_arch_output_basic_block):
4326         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4327         for bits 32-47 with signed load/store diplacements for bits
4328         48-63.  Use prefered base/offset order for indexed form.
4329         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4330         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4331         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4332         OP_LOADI2_MEMBASE): Same.
4333         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4334         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4335         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4336         indexed form.
4337         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4338         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4339         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4340         OP_LOADI1_MEMINDEX): Same
4341         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4342         OP_STORER8_MEMINDEX): Same
4343         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4344         computations.
4345         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4346         for bits 32-47 with signed load/store diplacements for bits
4347         48-63.  Use prefered base/offset order for indexed form.
4348
4349 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4350
4351 This patch is contributed under the terms of the MIT/X11 license
4352
4353         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4354         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4355         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4356         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4357         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4358         cfg->stack_usage to avoid size warnings.
4359         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4360         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4361         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4362         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4363         to convert.
4364         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4365         after code varible is initialized.
4366         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4367         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4368         (mono_arch_emit_epilog): 
4369         Move Use ppc_load32 for cfg->stack_usage to avoid size
4370         warnings.
4371
4372 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4373
4374         * method-to-ir.c: The write barrier doesn't do the store anymore,
4375         so we have always to emit it.  Also, emit the wbarrier after the
4376         store.
4377
4378 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4381         for argument count 3 too.
4382
4383 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4384
4385         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4386         the caller handle the exceptions.
4387         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4388         method. Fixes #524498.
4389
4390 2009-07-22  Geoff Norton  <gnorton@novell.com>
4391
4392         * mini-exceptions.c: Fix build on ia64.
4393
4394 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4395
4396         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4397         barriers.
4398
4399 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4400
4401         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4402         code.
4403
4404 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4405
4406         * basic-simd.cs (Main): Pass args to the test driver.
4407
4408 2009-07-20  Geoff Norton  <gnorton@novell.com>
4409
4410         * mini-x86.h: Fix the x86 version guards to use Apple's
4411         properly defined macros.
4412
4413 2009-07-20  Geoff Norton  <gnorton@novell.com>
4414
4415         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4416         aligned access.
4417
4418 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4419
4420         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4421         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4422         the information which is needed for invokes, so only one locking+hash table
4423         lookup is needed.
4424
4425         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4426         
4427         * aot-compiler.c (add_generic_instances): Emit instances of 
4428         GenericComparer<T> for primitive types.
4429
4430 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4431
4432         * mini-posix.c: Fix linux build.
4433
4434 2009-07-19  Geoff Norton  <gnorton@novell.com>
4435
4436         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4437         mono_gdb_render_native_backtraces
4438         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4439         so we implement the sane semantics to the runtime here
4440         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4441         so we need to call it differently (mono_gdb_render_native_backtraces)
4442         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4443         here for default implementations.
4444         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4445         support Apple's weird syscall (SYS_fork) implementation and not busy
4446         loop in abort() on native crashes on OSX anymore.
4447
4448 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4449
4450         * aot-runtime.c (load_method): Change the handling of the
4451         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4452         are used.
4453
4454         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4455
4456 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4457
4458         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4459         seems to break the aot tests.
4460         
4461         * mini.c (mono_patch_info_equal): Fix the handling of 
4462         MONO_PATCH_INFO_RGCTX_FETCH.
4463
4464 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4465
4466         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4467
4468         * mini.c (mono_patch_info_hash): Fix the handling of 
4469         MONO_PATCH_INFO_INTERNAL_METHOD.
4470         (mono_patch_info_equal): Ditto.
4471
4472 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4475         in a few places.
4476         
4477         * mini-llvm.c: Add some infrastructure for AOT support.
4478
4479 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4480
4481         * mini-llvm-cpp.c: Update to the latest llvm api.
4482         
4483         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4484         option to false to prevent llvm from installing signal handlers which
4485         trip up the gc.
4486         
4487 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4488
4489         * cpu-x86.md:
4490         * cpu-amd64.md: Revert previous change as those instructions
4491         take 2 separate arguments. Remember to read the arch docs more
4492         carefully next time.
4493
4494 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4495
4496         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4497
4498 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4499
4500         * mini-ppc.c: exploit multiple load/store units if available (rest of
4501         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4502         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4503
4504 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4505
4506         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4507         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4508
4509 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4510
4511         * cpu-x86.md: Fix missing clobbering from trancendental simd
4512         ops.
4513
4514         * cpu-amd64.md: Same.
4515
4516 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4517
4518         Contributed under the terms of the MIT/X11 license by
4519         Jerry Maine <crashfourit@gail.com>.
4520
4521         * basic-simd.cs: Added tests for single and doulble indexers.
4522
4523         * cpu-amd64.md: Added simd opcode information.
4524
4525         * mini-amd64.c: Added IR to native simd generation code.
4526         Added simd register names and function that returns them.
4527
4528         * mini-amd64.h: Added marcos to turn on simd code compilation in
4529         amd64. Added max simd register count marco. Added caller/callee
4530         register mask marcos. Added marcos to use simd register bank.
4531
4532         * mini.h: Added helper marco for shufling dwords and simple
4533         floats.
4534
4535 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4536
4537         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4538
4539         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4540
4541         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4542         the length of the native code as well.
4543
4544         * basic-simd.cs: Add a test for #521662.
4545
4546 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4547
4548         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4549
4550 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4551
4552         * mini.c: Register function for getting the IP from a signal
4553         context with metadata.
4554
4555 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4556
4557         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4558         call a generic class init trampoline if needed. Fixes #519336.
4559
4560         * generics.cs: Add a test.
4561         
4562 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4563
4564         * method-to-ir.c: When doing a call which might be remote from
4565         shared generic code to other shared code with open type arguments,
4566         get the remoting invoke wrapper from the RGCTX and do an indirect
4567         call to it.
4568
4569 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4570
4571         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4572         after the unbox trampoline in the full-aot case.
4573
4574 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4575         
4576         * mini.c: Move initialization of jit_mutex before debugger initialization
4577         
4578         to avoid crashes.
4579         
4580         
4581         * Info.plist: added Info.plist and link flag to enable the mono executable
4582         to access other processes. Requires codesigning of the executable to work.
4583         
4584         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4585         
4586         compile on OS X.
4587         
4588
4589 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4590
4591         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4592
4593 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4594
4595         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4596         when the generic instance is an instantiation of a subclass of the
4597         methods class. Fixes #517166.
4598
4599 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4600
4601         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4602         code.
4603
4604         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4605         AOTed code.
4606
4607         * CMakeLists.txt: Add minimal support for installation.
4608
4609 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4610
4611         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4612         determine whenever a method is directly callable to a separate function.
4613
4614         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4615         needed ones as a result of the previous change.
4616
4617         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4618         type of register arrays.
4619
4620         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4621         type of register arrays.
4622
4623 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4624         
4625         Contributed under the terms of the MIT/X11 license by
4626         Jerry Maine <crashfourit@gail.com>.
4627
4628         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4629
4630 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4631
4632         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4633
4634 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4635
4636         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4637         dump of structure return value. Fix some formatting.
4638         * cpu-s390x.md: Fix lengths of instruction sequences.
4639         * mini-s390.c: Minor formatting changes.
4640
4641 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4642
4643         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4644         Use sigaction on freebsd as well.
4645
4646 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4647
4648         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4649         uses #ifdef on it.
4650         
4651         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4652
4653 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4654
4655         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4656
4657 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4658
4659         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4660
4661 2009-06-20  Martin Baulig  <martin@ximian.com>
4662
4663         * debug-mini.c
4664         (MonoDebuggerThreadFlags): New enum typedef.
4665         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4666         (mono_debugger_thread_created): Added `gpointer func' argument;
4667         initialize the new `thread_flags' field.
4668
4669 2009-06-18  Martin Baulig  <martin@ximian.com>
4670
4671         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4672         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4673
4674         * debug-debugger.c
4675         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4676         flag in `MONO_DEBUGGER__info.runtime_info'.
4677
4678         * driver.c
4679         (mono_main): Call mini_debugger_set_attach_ok() if generics
4680         sharing is disabled.
4681
4682 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4683
4684         * aot-compiler.c (add_wrappers): Fix a warning.
4685
4686         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4687         the ppc load/store macro changes.
4688
4689 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4690
4691         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4692
4693         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4694         not just the got symbol.
4695
4696         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4697         on ppc.
4698
4699         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4700         ppc.
4701         
4702         * aot-compiler.c: Remove some fixmes.
4703
4704         * driver.c (mono_main): Print a helpful message when cross-compiling.
4705
4706         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4707
4708         * method-to-ir.c (initialize_array_data): Do the optimization if the
4709         target byte order is little endian, instead of the host byte order.
4710
4711         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4712         wrappers into the mscorlib image, Emit a unique plt symbol for each
4713         image, emit symbols for plt entries.
4714
4715         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4716         a .size directive.
4717         
4718 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4719
4720         * aot-compiler.c (add_wrappers): Avoid calling 
4721         mono_marshal_get_type_info () since it can assert for some types.
4722
4723         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4724         ldtoken are used inside wrappers.
4725
4726         * helpers.c: Add support for prefixing tools with the arch name.
4727
4728         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4729         quantities when using ilp32.
4730
4731         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4732         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4733
4734         * image-writer.c: Use .long on ilp32.
4735
4736         * aot-compiler.c: Use 32 bit loads on ilp32.
4737         
4738 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4739
4740         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4741
4742         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4743
4744         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4745
4746         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4747         second got slot of every aot image.
4748         
4749         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4750         aot on platforms with function pointers.
4751
4752         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4753         support for aot/full aot on ppc/ppc64.
4754         
4755         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4756         arguments which are needed on ppc.
4757
4758         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4759         argument.
4760
4761         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4762         
4763         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4764
4765         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4766
4767         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4768
4769         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4770
4771 2009-06-17  Geoff Norton  <gnorton@novell.com>
4772
4773         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4774
4775 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4776
4777         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4778         to control whenever the dwarf writer is in xdebug or aot mode.
4779         (emit_class_dwarf_info): Use a separate abbrev for structures without
4780         children.
4781
4782         * aot-compiler.c: Pass the appending parameter to 
4783         mono_dwarf_writer_create ().
4784
4785         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4786         falls through to its next bblock. Fixes #513931.
4787
4788         * iltests.il: Add a test.
4789
4790         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4791         infor even if emit_line is FALSE, as the apple linker seems to require it.
4792
4793         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4794
4795         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4796         gcc does.
4797         (emit_fde): Ditto.
4798
4799 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4800
4801         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4802         mips build.
4803
4804 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4805
4806         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4807         'has_call_handler' fields.
4808
4809         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4810
4811         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4812         first bblock if not needed. Fixes #512790.
4813         
4814 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4815
4816         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4817         
4818         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4819         wrappers.
4820
4821         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4822         remoting-invoke-with-check wrappers, which are not needed when running with
4823         full-aot, since it doesn't support remoting.
4824         
4825 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4826
4827         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4828
4829         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4830         method info, it is not used anymore.
4831
4832         * mini.h: Bump AOT file format version.
4833         
4834         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4835         word smaller.
4836
4837         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4838         change above.
4839         
4840         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4841
4842         * mini.h: Bump AOT file format version.
4843         
4844 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4845
4846         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4847         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4848         iphone.
4849
4850         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4851         of CKFINITE and FBGE for VFP.
4852
4853 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4854
4855         * aot-compiler.c: Don't align code to 16 bytes on arm.
4856         
4857         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4858         before the methods they belong to.
4859
4860         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4861         the full-aot case if possible, since the trampoline will be called right 
4862         away.
4863
4864         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4865         trampolines to 1024 after the change above.
4866
4867         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4868         trampoline to save 8 bytes per trampoline.
4869
4870         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4871         change above.
4872
4873 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4874
4875         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4876
4877 2009-06-08  Martin Baulig  <martin@ximian.com>
4878
4879         * debug-mini.c
4880         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4881         (_mono_debugger_throw_exception): Don't make this static.
4882         (_mono_debugger_unhandled_exception): Likewise.
4883         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4884
4885         * debug-mini.c
4886         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4887         (_mono_debugger_throw_exception): Add function prototype.
4888         (_mono_debugger_unhandled_exception): Likewise.
4889
4890         * mini-exceptions.c
4891         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4892         arg; return the first exception handler if the exception is caught
4893         and we're running inside the debugger.
4894         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4895         improve exception handle inside runtime-invoke, check whether the
4896         exception is actually caught in the method being invoked and not
4897         by the runtime-invoke-wrapper.
4898
4899 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4900
4901         * image-writer.c: Improve support for the osx assembler.
4902
4903         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4904         support them.
4905
4906 2009-06-08  Martin Baulig  <martin@ximian.com>
4907
4908         * debug-mini.c
4909         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4910         (_mono_debugger_throw_exception): Don't make this static.
4911         (_mono_debugger_unhandled_exception): Likewise.
4912         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4913
4914         * debug-mini.c
4915         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4916         (_mono_debugger_throw_exception): Add function prototype.
4917         (_mono_debugger_unhandled_exception): Likewise.
4918
4919         * mini-exceptions.c
4920         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4921         arg; return the first exception handler if the exception is caught
4922         and we're running inside the debugger.
4923         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4924         improve exception handle inside runtime-invoke, check whether the
4925         exception is actually caught in the method being invoked and not
4926         by the runtime-invoke-wrapper.
4927
4928 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4929
4930         * image-writer.c (append_subsection): Don't align subsections of the
4931         debug_line section as a workaround.
4932
4933         * dwarfwriter.c: Emit line number info in the AOT case as well.
4934
4935 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4936
4937         This patch is contributed under the terms of the MIT/X11 license
4938
4939        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4940        code_len <= code_size
4941
4942 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4943
4944         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4945
4946 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4947
4948         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4949         invoke wrappers, we now use trampolines instead.
4950
4951 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4952
4953         * mini-darwin.c: The exception thread must not be registered with
4954         the GC.
4955
4956 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4957
4958         * mini-gc.c: Disable the code because it makes SGen crash.
4959
4960 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4963         instead of asserting.
4964
4965 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4966
4967         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4968         output file after the code has been compiled.
4969
4970 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4973
4974 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4975
4976         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4977         entries distinction to simplify the code.
4978
4979         * mini.h: Bump AOT file format version.
4980         
4981 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4982
4983         * objects.cs: Fix the signature of one of the tests.
4984
4985         * mini.c (mini_create_ftnptr): New helper function, moved here from
4986         object.c.
4987         (mini_get_addr_from_ftnptr): Ditto.
4988         (mini_init): Install the new helpers.
4989
4990 2009-05-28  Martin Baulig  <martin@ximian.com>
4991
4992         Correctly initialize the debugger when embedding Mono.
4993
4994         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4995         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4996         see documentation in mini_debug_running_inside_mdb().
4997
4998         * debug-debugger.c
4999         (mini_debug_running_inside_mdb): New function to check whether
5000         we're running inside mdb.
5001
5002         * mini.c (mini_init): Call mini_debugger_init() if we're running
5003         inside the debugger.
5004
5005         * driver.c (mono_main): Moved the call to mini_debugger_init()
5006         into mini_init() to make this work when embedding Mono.
5007
5008         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5009         calls to mini_debugger_init().
5010
5011         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5012         mono_debugger_main() -> mini_debugger_main() and put them inside a
5013         `MONO_DEBUGGER_SUPPORTED' conditional.
5014
5015 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5016
5017         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5018         this is no longer in use.
5019         * mini.h: Same.
5020
5021 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5022
5023         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5024
5025         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5026         methods.
5027
5028 2009-05-27  Martin Baulig  <martin@ximian.com>
5029
5030 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5031
5032         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5033         long_conv_to_r_un to 64 bits.
5034
5035         * cpu-x86.md: Increase the instruction size due to the changes.
5036
5037         * iltests.il.in: Add regression test.
5038
5039         Fixes #467201.
5040
5041 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5042
5043         * objects.cs: Move the previous test from basic.cs to here.
5044
5045 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5046
5047         * basic.cs: Add regression test for #506915.
5048
5049 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5050
5051         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5052         optimization we must check the bb of the first byte of stobj as
5053         it's the only one set in cil_offset_to_bb.
5054
5055         Fixes #506915.  
5056
5057 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5058
5059         * image-writer.c: Fix pointer directive on ppc64.
5060
5061 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5062
5063         * image-writer.c (asm_writer_emit_section_change): Avoid using
5064         .bss subsections on ppc too.
5065
5066 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5067
5068         * image-writer.c: Fix the definition of TARGET_ASM_....
5069         
5070         * image-writer.c: Fix the emission of assembler directives in the last
5071         change.
5072
5073         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5074         exception throwing code to accomodate ppc64.
5075
5076         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5077         size to work on ppc64 too.
5078
5079         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5080         too.
5081
5082         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5083         the assembler dialect instead of using platform specific defines.
5084
5085 2009-05-22  Geoff Norton  <gnorton@novell.com>
5086
5087         * mini-arm.c (get_call_info): If a structure is split between the stack
5088         and argument registers, we should not advance the stack pointer by the entire
5089         native size, but just by the amount that spilled.
5090
5091 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5094         correctly.
5095
5096 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5099         wrappers normally.
5100         
5101         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5102         methods so wrapper don't get added twice.
5103         (add_generic_instances): Don't add methods of arrays.
5104
5105         * generics.cs: Mark one test as !FULLAOT.
5106
5107 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5108
5109         * mini-x86.c (emit_move_return_value): Remove unused vars.
5110
5111 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5112
5113         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5114         decomposing 8 bytes structs into a LCALL.
5115
5116         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5117         pointer for where to store the returned regs.
5118
5119         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5120         state the concern.
5121
5122         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5123
5124 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5125
5126         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5127         without getenv.
5128
5129 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5130
5131         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5132
5133         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5134         generics.
5135
5136 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5137
5138         * local-propagation.c (mono_local_cprop): Avoid local propagation
5139         across paired add/sub if the first instruction dest reg is it's
5140         source reg. For example:
5141
5142         int_add_imm R12 <- R12 [1] clobbers: 1
5143         int_sub_imm R42 <- R12 [1] clobbers: 1
5144
5145         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5146         maintain the math identify.
5147
5148         Fixes #505375.
5149
5150 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5151
5152         * Makefile.am: avoid going on the network just to get the revision,
5153         use git log instead
5154
5155 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5156
5157         Fixed estimate for short branches on amd64 (they were off mark, and
5158         enabling call prolog-epilog instrumentations caused assertions).
5159         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5160         estimate for the maximum length of this basic block.
5161         * mini-amd64.c:
5162         - mono_arch_emit_prolog: compute max_length for each basic block
5163           (instead of max_offset), and inflate size estimate also for entry bb
5164           in case of code instrumentation.
5165         - mono_arch_output_basic_block: get rid of "cpos" (the current
5166           estimated "position" in the code), and always use "offset" instead,
5167           which is accurate; at the beginning of the function quickly recompute
5168           max_offset for all the remaining blocks, starting from the current
5169           cfg->code_len (which is correct, and not estimated) and using the
5170           estimated block lengths computed previously.
5171
5172 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5175         functions, it is already done in the caller.
5176
5177         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5178
5179         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5180         MONO_ARCH_GSHARED_SUPPORTED define.
5181
5182         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5183
5184         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5185         function.
5186
5187 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5188
5189         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5190         call to mono_marshal_get_rgctx_invoke ().
5191
5192         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5193         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5194         gshared use the static rgctx trampolines now.
5195         
5196         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5197         platform supports it.
5198
5199 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5200
5201         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5202
5203         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5204
5205 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5208
5209         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5210         for ppc.
5211
5212 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5213
5214         Made it possible for mono_arch_instrument_epilog to preserve
5215         argument registers, otherwise instrumenting the "epilogue" before
5216         a tail call would clobber them.
5217         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5218         if like mono_arch_instrument_epilog but with an additional parameter
5219         that states if argument registers must be preserved.
5220         * mini.c: implemented mono_arch_instrument_epilog as a call to
5221         mono_arch_instrument_epilog_full without asking to preserve argument
5222         registers (this makes the existing code work as usual).
5223         * mini-amd64.c:
5224         - mono_arch_instrument_epilog: add parameter to transform it into
5225         mono_arch_instrument_epilog_full, and preserve argument registers
5226         when required.
5227         - mono_arch_output_basic_block, OP_TAILCALL case: call
5228         mono_arch_instrument_epilog_full.
5229         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5230         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5231         only transformed mono_arch_instrument_epilog into
5232         mono_arch_instrument_epilog_full.
5233
5234 2009-05-15  Geoff Norton  <gnorton@novell.com>
5235
5236         * mini-darwin.c: This works on arm now.
5237
5238 2009-05-14  Geoff Norton  <gnorton@novell.com>
5239
5240         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5241         embedding api.
5242
5243 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5244
5245         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5246         label names.
5247
5248         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5249         wrappers during full aot mode correctly.
5250
5251         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5252         methods correctly.
5253
5254         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5255         mono_metadata_type_hash ().
5256
5257 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5258
5259         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5260         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5261         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5262         Removed MONO_INST_BRLABEL from the instruction flags, and the
5263         remaining code that used it, because we do not support branches inside
5264         basic blocks (and branch target labels) anymore.
5265         * Makefile.am: As part of the above cleanup, remove reference to
5266         BURG files which don't exist anymore.
5267
5268 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5269
5270         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5271         osx.
5272
5273         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5274         to use mono_arch_throw_corlib_exception.
5275
5276         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5277         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5278
5279         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5280         domain mempool.
5281
5282         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5283
5284         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5285         for the got to make debugging easier and to avoid confusing it with the
5286         system got.
5287         
5288         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5289         method so a breakpoint can be set when using gdb.
5290
5291 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5292
5293         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5294         on mono_method_get_imt_slot ().
5295
5296         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5297         num_decodes variables.
5298
5299         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5300         change as it doesn't seem to work.
5301         
5302         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5303         wrappers.
5304
5305 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5306
5307         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5308         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5309
5310         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5311         builder when using full aot.
5312
5313         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5314         here, it is already handled.
5315         
5316         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5317         correctly for IMT.
5318
5319         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5320
5321         * mini-arm.h: Enable IMT for full aot.
5322         
5323         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5324         arch doesn't support it.
5325
5326         * mini.c (mini_init): Don't disable IMT for full aot if the
5327         architecture supports it.
5328
5329         * mini.h (MonoAotTrampoline): New enum containing the different types
5330         of 'numerous' trampolines.
5331         (MONO_AOT_FILE_VERSION): Bump this.
5332
5333         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5334         static rgctx trampolines. Add support for full-aot IMT thunks.
5335
5336         * mini-amd64.h: Enable IMT for full aot.
5337
5338         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5339         to exclude tests belonging to a category.
5340
5341         * generics.cs: Mark some tests with a !FULLAOT category.
5342
5343         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5344         generics tests.
5345
5346 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5349         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5350         (emit_plt): Fix a warning.
5351
5352 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5353
5354         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5355         back into aot-compiler.c to a place where the other functions shared by
5356         the runtime and aot compiler are.
5357         
5358         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5359         as done previously, instead of in MonoAotFileInfo, since pointers might have
5360         alignment requirements.
5361
5362         * mini.h: Bump AOT file format version.
5363
5364 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5365
5366         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5367         that is used at runtime from the aot-compiler.c, this makes it
5368         work on setups that remove the AOT compiler from the output
5369         image. 
5370
5371 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5372
5373         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5374         PPC.
5375
5376         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5377
5378         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5379
5380         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5381         stuff to mono_arch_decompose_long_opts ().
5382         (mono_decompose_opcode): Remove some dead code.
5383
5384 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5385
5386         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5387         cmethod can be null for quite a some reasons.
5388
5389 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5390
5391         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5392
5393 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5396
5397 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5398
5399         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5400         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5401         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5402         calls returning structures by addr on amd64.
5403
5404         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5405
5406         * iltests.il.in: Restructure the tail call tests a bit.
5407         
5408 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5409
5410         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5411         for virtual methods too.
5412
5413 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5414
5415         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5416         due to regression in verifying System.dll.
5417
5418 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5419
5420         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5421         in dynamic methods.
5422
5423         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5424         instances.
5425
5426         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5427         g_str_hash () which can change.
5428
5429         * driver.c (mini_regression): Disable optimizations not supported by
5430         the cpu. Fixes #500019.
5431
5432         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5433         build.
5434
5435 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5436
5437         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5438         to the latest LLVM code.
5439
5440 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5441
5442         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5443
5444 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5445
5446         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5447         x86/amd64.
5448
5449         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5450         no longer saving offsets, so just save the patch types along with the other
5451         info.
5452         * aot-runtime.c (load_patch_info): Update after the changes to 
5453         encode_patch_list ().
5454         (decode_got_entry): Removed, merged into load_patch_info ().
5455         (is_shared_got_patch): Removed, call the same function from
5456         aot-compiler.c.
5457
5458         * mini.h: Bump aot file format version.
5459         
5460         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5461         half-finished no-dlsym code.
5462
5463         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5464         option.
5465
5466         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5467         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5468
5469 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5470
5471         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5472         buffer length to work with AOT code.
5473
5474         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5475         ldfld/stfld opcodes.
5476
5477         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5478         as it is not used.
5479
5480         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5481
5482         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5483
5484         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5485         LLVM API.
5486
5487         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5488         if needed. Don't decompose long operations when using llvm.
5489
5490 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5491
5492         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5493         PAGESIZE constant.
5494
5495         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5496
5497 2009-05-03  Martin Baulig  <martin@ximian.com>
5498
5499         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5500         mono_debugger_insert_method_breakpoint() since the class init
5501         handler we're inserting at the top of the method already gives us
5502         a notification.
5503
5504 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5505
5506         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5507         to mono_arch_decompose_long_opts () for x86 and arm.
5508
5509 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5510
5511         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5512         TARGET_AMD64 here.
5513
5514 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5515
5516         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5517         JIT code.
5518
5519 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5520
5521         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5522         number of trampolines used in full-aot mode.
5523
5524         * aot-compiler.c: Add an ntrampolines option to set the number of 
5525         trampolines emitted in full-aot mode.
5526
5527 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5528
5529         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5530         a volatile load. Get rid of get_tempname (), llvm assigns names
5531         automatically.
5532
5533         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5534         builder function.
5535
5536         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5537         a value.
5538
5539         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5540         level 1.
5541
5542         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5543         to the same register as a fixed sreg2. Fixes #497271.
5544
5545         * iltests.il.in: Add a new test.
5546
5547 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5548
5549         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5550         stack, since pushes complicate exception handling.
5551
5552         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5553         the stack if they are passed using moves.
5554
5555         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5556
5557         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5558         when using llvm.
5559
5560         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5561         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5562         of FMOVE if it is an R4.
5563
5564 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5565
5566         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5567
5568         * mini.h (LLVMCallInfo): New structure to store calling convention 
5569         information for the LLVM back end similar to the CallInfo structures in 
5570         the back-ends.
5571
5572         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5573         call information in a format usable by LLVM.
5574         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5575
5576         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5577         mono_llvm_emit_call () when compiling using LLVM.
5578
5579         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5580         comments to all functions. Fix memory leaks. Add a public init/cleanup
5581         function.
5582
5583         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5584
5585         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5586         mono_array_new_va () jit icall.
5587         
5588 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5589
5590         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5591         multiple machine description files to be specified.
5592         * mini-ops.h: fixes for cross-compilation.
5593
5594 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5595
5596         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5597         some porting work.
5598
5599 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5600
5601         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5602         to prevent asserts in various passes. Fixes #497220.
5603
5604 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5605
5606         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5607         a racy assert.
5608
5609         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5610         table to avoid duplicates.
5611
5612         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5613         
5614         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5615         option is used.
5616
5617 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5618
5619         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5620         is for method or field access.
5621
5622 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5623
5624         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5625         a Value to stdout.
5626
5627         * mini-llvm.c (mono_llvm_emit_method): Use it.
5628         
5629         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5630         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5631         on volatile values.
5632
5633         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5634         synchronized methods.
5635
5636         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5637
5638         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5639
5640         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5641         OP_LOADI8_MEM.
5642
5643         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5644         allowing some options to be set dynamically.
5645
5646 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5647
5648         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5649         unconditional branch.
5650
5651         * mini.h (MonoTrampolineType): Add new trampoline type 
5652         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5653         compiled code.
5654
5655         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5656         function.
5657
5658         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5659         creation function.
5660
5661         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5662         is enabled. Instead, use the llvm vcall trampoline.
5663         
5664         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5665
5666         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5667         
5668         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5669         functions.
5670
5671         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5672         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5673
5674         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5675         OP_IA64_CSET opcode.
5676
5677         * mini.c: Fix a warning.
5678
5679         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5680         THROW to the appropriate llvm type.
5681
5682 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * mini.c (mini_method_compile): Add statistics for methods JITted
5685         with/without LLVM.
5686
5687 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5688
5689         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5690         OP_IA64_CMP_<cond>_IMM opcodes.
5691
5692 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5693
5694         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5695         corlib exceptions.
5696
5697         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5698         correctly.
5699
5700         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5701         GENERICINST.
5702
5703 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5704
5705         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5706
5707 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5708
5709         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5710         support.
5711
5712         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5713         rgctx invoke trampolines for x86.
5714
5715         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5716         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5717         (mono_arch_get_vcall_slot): Simplify this.
5718
5719 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5722         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5723
5724 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5725
5726         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5727         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5728
5729         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5730
5731         * liveness.c (visit_bb): Remove a needless assert.
5732
5733 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5734
5735         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5736         full aot support to the arch specific code.
5737
5738         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5739
5740         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5741
5742         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5743         
5744         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5745         collect information about the delegate invoke impl trampolines.
5746
5747         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5748         to save trampolines during full-aot mode.
5749
5750         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5751         creation function which returns a trampoline which sets the rgctx
5752         argument.
5753         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5754         wrapper if possible.
5755         (mono_delegate_trampoline): Ditto.
5756
5757         * mini.c (mono_jit_runtime_invoke): Ditto.
5758
5759         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5760         
5761         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5762
5763         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5764         
5765 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5766
5767         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5768         just setting the opcode to OP_NOP.
5769
5770 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5771
5772         * mini.c (mini_method_compile): Put the last change inside an 
5773         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5774         
5775         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5776         and extend live ranges to cover the whole method when using xdb.
5777
5778         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5779         do it in the trampolines.
5780
5781         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5782         needed.
5783
5784         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5785         
5786         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5787         call code in full-aot mode since IMT is disabled there.
5788         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5789         new JIT no longer has that restriction.
5790
5791         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5792
5793         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5794         a more compact format.
5795         (mono_aot_wrapper_name): New function to return a unique name for a
5796         wrapper method, also used by the AOT runtime.
5797
5798         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5799         aot-compiler.c.
5800
5801         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5802         when a ICollection<T> etc is encountered.
5803         (add_generic_instances): Process method arguments/locals too.
5804         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5805         trampoline names.
5806
5807         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5808         
5809 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5810
5811         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5812
5813         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5814
5815         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5816         representing the result of the decomposition. Nullify instructions
5817         instead of setting them to OP_NOP since nops can't have registers
5818         set.
5819
5820 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5821
5822         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5823         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5824         info. Strip 'mapping symbols' on ARM.
5825
5826         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5827         
5828         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5829         this with the native genmdesc.
5830
5831 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5832
5833         * aot-runtime.c:  Fixing the MSVC build.
5834
5835         Code is contributed under MIT/X11 license.
5836
5837 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5838
5839         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5840         JITted code depends on it.
5841
5842 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5843
5844         * aot-compiler.c: Use new MonoGenericParam accessors.
5845
5846 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5847
5848         Reduce memory usage and improve correctness wrt MonoGenericParam
5849         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5850         handing.  Avoid allocating MonoGenericParams, but use the ones in
5851         the container itself.
5852
5853 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5854
5855         * tasklets.c: Return exceptions in the out argument.
5856
5857 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5858
5859         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5860         opcode. Use pointer types in more places instead of casting them to 
5861         integers.
5862
5863         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5864         optimizations.
5865         (mono_llvm_optimize_method): New helper function to optimize a method.
5866
5867         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5868         widening code so it could be called from more places.
5869         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5870         code paths in the call opcodes.
5871
5872 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5873
5874         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5875
5876 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * dwarfwriter.c: Use _ to separate class name 
5879         components as gdb can't handle '.'. Represent reference variables
5880         as 'class <NAME>&'.
5881         
5882         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5883
5884         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5885         
5886         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5887
5888         * gc-test.cs: New file with GC stack marking tests.
5889         
5890         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5891         negative numbers for vfp.
5892
5893         * basic-float.cs: Add a test.
5894         
5895 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5896
5897         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5898
5899 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5900
5901         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5902         part of tasklet/continuation support.
5903
5904 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5905
5906         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5907         amd64 opcodes inside an ifdef.
5908
5909         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5910         of complex types.
5911         
5912         * dwarfwriter.c (emit_type): Emit the class info for classes.
5913
5914 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5915
5916         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5917
5918         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5919
5920         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5921
5922         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5923
5924 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5925
5926         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5927
5928         * mini-llvm.c: Update comments.
5929
5930         * mini.h (COMPILE_LLVM): New macro.
5931
5932         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5933
5934         * ssa.c (mono_ssa_compute): Ditto.
5935         
5936         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5937         the unwind ops from a DWARF FDE.
5938
5939         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5940         methods by extracting the dwarf unwind ops from the unwind info generated
5941         by LLVM.
5942         
5943         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5944         calls.
5945
5946         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5947         addressing modes.
5948
5949 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5950
5951         * Makefile.am (llvm_sources): Enable this.
5952
5953         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5954         failing back to the JIT if something cannot be handled.
5955
5956         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5957         compiling with LLVM.
5958
5959         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5960         compiling with LLVM.
5961
5962         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5963         compiling with LLVM.
5964
5965         * mini-ops.h: Add a few opcodes needed by LLVM.
5966
5967         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5968         has no unwind info.
5969
5970         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5971         backend.
5972
5973         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5974
5975         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5976
5977 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5978
5979         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5980         ridiculously large methods.
5981
5982 2009-03-31  Martin Baulig  <martin@ximian.com>
5983
5984         * debug-debugger.c (debugger_remove_breakpoint): Call
5985         mono_debugger_remove_class_init_callback ().
5986
5987 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5988
5989         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5990         right before emitting code, not at the start.
5991
5992         * mini.c (mono_postprocess_patches): Extract this into a separate function
5993         from mono_codegen ().
5994
5995         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5996         byref types correctly.
5997
5998 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5999
6000         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6001         by the last change.
6002
6003 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6004
6005         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6006         indirect calls, this avoids problems where get_vcall_slot () would get
6007         confused by the native code for the instruction preceeding the call.
6008         (mono_arch_get_vcall_slot): Simplify this.
6009         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6010
6011         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6012         register allocator now seems to depend on them instead of the data in
6013         cpu-<ARCH>.md.
6014
6015         * mini.c (mini_method_compile): Throw the correct type of exception if
6016         mono_method_get_header () fails because of a loading error.
6017
6018 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6019
6020         * mini.c (mini_method_compile): Clear the loader error if the method
6021         header cannot be decoded.
6022
6023         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6024         interface methods on proxies correctly.
6025
6026         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6027         this argument for vtype methods. Add precise liveness info for arguments.
6028
6029         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6030         LIVERANGE_START/END opcodes.
6031
6032         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6033         for arguments and values in registers.
6034
6035 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6036
6037         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6038         return a valuetype. Fixes #487518.
6039
6040         * iltests.il: Add a test.
6041         
6042         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6043
6044         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6045         closed over a null reference correctly.
6046
6047 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6050
6051 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6052
6053         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6054         allocated to the same registers as fixed sregs.
6055
6056 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6057
6058         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6059         ATOMIC_CAS_IMM ops.
6060
6061         * method-to-ir.c: Handle more cases for
6062         Interlocked.CompareExchange.
6063
6064         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6065         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6066         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6067
6068 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6069
6070         * aot-runtime.c (decode_method_ref): Fix a warning.
6071
6072         * unwind.c (mono_unwind_frame): Ditto.  
6073
6074 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6077         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6078
6079         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6080         fix the handling of large values in the ALU_PC_G0_NC relocation.
6081
6082 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6083
6084         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6085
6086 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6087
6088         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6089         ops.
6090
6091 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6092
6093         * method-to-ir.c: MINI_OP3 needs a comma.
6094
6095         * method-to-ir.c, mini.h, mini.c: Remove
6096         mono_init_op_sreg_counts ().
6097
6098 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6101         OP_JMP.
6102         
6103         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6104         assertion.
6105
6106         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6107
6108         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6109         code somewhat.
6110
6111 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6112
6113         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6114         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6115         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6116         operations.
6117
6118 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6119
6120         * driver.c: Change location of gc_wrapper.h.
6121
6122         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6123         inside finally clauses correctly. Fixes #485721.
6124
6125         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6126         after the change above.
6127
6128         * exceptions.cs: Add a test.
6129         
6130 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6131
6132         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6133
6134         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6135         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6136         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6137
6138         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6139         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6140
6141 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6142
6143         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6144         Simplify logic for ensure_method_is_allowed_to_call_method. 
6145         Handle wrappers on callers.
6146
6147 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6148
6149         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6150         them don't run yet.
6151
6152         * basic-simd.cs: Fix the names of some test methods.
6153
6154 2009-03-18  Geoff Norton  <gnorton@novell.com>
6155
6156         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6157
6158 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6159
6160         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6161
6162 2009-03-17  Jb Evain  <jbevain@novell.com>
6163
6164         * driver.c: remove now uneeded call to mono_gc_base_init before
6165         mono_profiler_load.
6166
6167 2009-03-17  Jb Evain  <jbevain@novell.com>
6168
6169         * dwarfwriter.c (token_handler): handle more cases.
6170
6171 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6172
6173         * method-to-ir.c: Remove more dead code (that was required only
6174         because of method_is_safe). Fix compiler warnings.
6175
6176 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6177
6178         * method-to-ir.c: Remove unneeded/useless method_is_safe
6179         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6180
6181 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6182
6183         * mini.c (mini_method_compile): Print the method been compiled with
6184         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6185         for people not familiar with the runtime.
6186
6187 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6188
6189         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6190         a managed object which is later put into a GList. Return its class instead.
6191
6192         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6193         stack slots when using sgen.
6194
6195 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6196
6197         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6198
6199 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6200
6201         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6202         > so it works on the first vreg as well.
6203
6204 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6205
6206         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6207         trigger randomly.
6208
6209         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6210         
6211         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6212         implement GArray.
6213
6214 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6215
6216         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6217         native->IL offset mapping.
6218
6219 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6220
6221         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6222
6223         * basic.cs: Add a test.
6224
6225 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6226
6227         * mini-x86.c (mono_arch_output_basic_block): Use different
6228         registers in case the ones we want to overwrite are used by the
6229         other operand.  Fixes regression in #480807.
6230
6231 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6232
6233         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6234
6235         * dwarfwriter.c (emit_line_number_info): The line number info for
6236         IL code was off by one. Fix that.
6237
6238         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6239         stack.
6240
6241 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6242
6243         Contributed under the terms of the MIT/X11 license by Steven
6244         Munroe <munroesj@us.ibm.com>.
6245
6246         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6247         Fixes #483462.
6248
6249 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6250
6251         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6252         as well.
6253
6254 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6255
6256         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6257         the delegate ctor handling code. Fixes #482638.
6258         
6259         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6260         #481458.
6261
6262         * iltests.il.in: Add a test.
6263         
6264         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6265         mini-posix.c.
6266
6267 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6268
6269         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6270         is shared generic code, return the trampoline, even if the method
6271         has already been compiled.  Fixes #479763.
6272
6273         * mini.c, mini.h: New function
6274         mono_jit_find_compiled_method_with_jit_info() which is the same as
6275         mono_jit_find_compiled_method() but also returns the jit info.
6276
6277 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6278
6279         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6280         for methods which actually have one.  For all other methods, make
6281         sure the this argument var is live the whole method.
6282
6283         * mini.c (mini_method_compile): Every shared method has a
6284         this/vtable/mrgctx info.  Fixes #480807.
6285
6286 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6287
6288         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6289         generic/imt thunks where some entries branch through the vtable,
6290         while other entries branch directly.
6291
6292 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6293
6294         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6295
6296         * mini-windows.c: Ditto.
6297         
6298         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6299         ctors.
6300
6301 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6302
6303         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6304         down an assert.
6305
6306 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6307
6308         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6309         #481403.
6310
6311 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6312
6313         * exceptions-x86.c: Include debug-mini.h - fixes build.
6314
6315 2009-03-04  Martin Baulig  <martin@ximian.com>
6316
6317         * debug-mini.c: Clean up the exception API and add documentation.
6318         (mono_debugger_handle_exception): New public method; this is
6319         called when throwing an exception or encountering an unhandled one.
6320         (mono_debugger_call_exception_handler): Formerly known as
6321         mono_debugger_handle_exception(); this is used to tell the
6322         debugger that we're about to invoke an exception handler.
6323
6324 2009-03-04  Martin Baulig  <martin@ximian.com>
6325
6326         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6327         ../metadata/mono-debug-debugger.c; save and reset exception state.
6328
6329 2009-03-02  Martin Baulig  <martin@ximian.com>
6330
6331         * debug-mini.c: Moved the debugger exception handling here from
6332         ../metadata/mono-debug-debugger.c.
6333
6334         * debug-mini.h
6335         (MonoDebuggerExceptionAction): New exception typedef.
6336
6337         * debug-mini.c
6338         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6339
6340         * exceptions-amd64.c
6341         (mono_amd64_throw_exception): Use the new debugger exception
6342         handling code.
6343
6344         * mini-exceptions.c
6345         (mono_handle_exception_internal): Don't call
6346         mono_debugger_unhandled_exception() here.
6347
6348 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6349
6350         * mini.c aot-compiler.c: Update after the changes to 
6351         mono_marshal_get_runtime_invoke ().
6352
6353         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6354         Virtual generic methods might not have method->slot set, work around
6355         that.
6356
6357         * generics.cs: Add a test.
6358
6359 2009-03-02  Geoff Norton  <gnorton@novell.com>
6360
6361         * mini.c:
6362         * driver.c: Allow signal chaining of SIGFPE as well.
6363
6364 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6367         this since it now receives the method not its generic context in the
6368         IMT reg.
6369
6370         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6371         generic/imt thunks where some entries branch through the vtable, while
6372         other entries branch directly.
6373
6374         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6375
6376         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6377         support for interface methods as well.
6378
6379         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6380         using the normal IMT thunks.
6381
6382         generics.cs: Add new tests.
6383         
6384         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6385         the generic inst to the generic imt thunks. This fixes AOT support, 
6386         improves consistency with the normal IMT thunks, and makes it easier to
6387         add support for interface generic virtual methods later.
6388
6389         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6390         
6391 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6392
6393         * driver.c (mono_set_signal_chaining): New public API function to enable
6394         signal chaining on POSIX platforms.
6395
6396         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6397         (si@lindenlab.com) to implement signal chaining. The original patch was
6398         contributed under the MIT X/11 license:
6399         https://bugzilla.novell.com/show_bug.cgi?id=318894
6400
6401 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6402
6403         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6404         too until it can be made to run on amd64.
6405
6406 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6407
6408         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6409         to  get_generic_context_from_code () + get_call_info () if possible.
6410
6411 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6412
6413         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6414         suspend-on-sigsegv functionality.
6415
6416         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6417         to suspend when a native SIGSEGV is received. This is useful for debugging
6418         crashes which don't happen under gdb, since a live process contains more
6419         information than a core file.
6420
6421         * mini-exceptions.c (mono_print_thread_dump): Use 
6422         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6423
6424         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6425
6426         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6427         
6428         * basic-float.cs: Disable the tests which currently fail on amd64.
6429
6430         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6431         value to mono_arch_patch_callsite () to fix crashes.
6432         
6433         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6434
6435 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6436
6437         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6438         nop code by patching the call address to point to the nullified class init
6439         trampoline, as the former does not seem to be safe on SMP machines.
6440
6441 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6442
6443         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6444         they were wrong.
6445
6446 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6447
6448         * basic-float.cs basic-calls.cs: Fix warnings.
6449
6450 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6451
6452         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6453         correct frame pointer in the LMF.  Should fix #478394.
6454
6455 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6456
6457         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6458
6459         * image-writer.c: Make the binary writer less verbose.
6460
6461 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6462
6463         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6464         are called from runtime invoke wrappers.
6465
6466 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6467
6468         * cpu-ppc.md (store_memindex): Increase the size of this.
6469
6470 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6471
6472         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6473
6474         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6475
6476         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6477         OP_LCONV_TO_R_UN.
6478
6479         Last fix for of #467201.
6480
6481
6482 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6483
6484         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6485
6486         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6487         and long_conv_to_r8_2:
6488
6489         Fixed part of #467201.
6490
6491 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6492
6493         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6494
6495         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6496         conversion to 32 bits.
6497
6498         * cpu-x86.md: Increase the size of int_conv_to_r4.
6499
6500         * basic-float.cs: Add a test for this.
6501
6502         Fixed part of #467201.
6503
6504 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6505
6506         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6507
6508         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6509         conversion to 64 bits.
6510
6511         * basic-float.cs: Add a test for this.
6512
6513         Fixed part of #467201.
6514
6515 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6516
6517         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6518
6519         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6520         This behavior is compatible with MS.
6521
6522         * iltest.il.in: Add a test for this.
6523
6524         Fixed part of #467201.
6525
6526 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6527
6528         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6529
6530         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6531         change the precision of the value.
6532
6533         * cpu-x86.md: Define len for float_conv_to_r4.
6534
6535         * basic-float.cs: Add a test for this.
6536
6537         Fixed part of #467201.
6538
6539 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6540
6541         * mini.c: Adjust locking order to the new semantics where the loader lock
6542         comes first.
6543
6544 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6545
6546         * aot-runtime.c:
6547         * mini-amd64.c:
6548         * mini-arm.c:
6549         * mini-ia64.c:
6550         * mini-mips.c:
6551         * mini-ppc.c:
6552         * mini-sparc.c:
6553         * mini-trampolines.c:
6554         * mini-x86.c:
6555         * mini.c:
6556         * tramp-alpha.c:
6557         * tramp-amd64.c:
6558         * tramp-arm.c:
6559         * tramp-hppa.c:
6560         * tramp-ia64.c:
6561         * tramp-mips.c:
6562         * tramp-ppc.c:
6563         * tramp-s390.c:
6564         * tramp-s390x.c:
6565         * tramp-sparc.c:
6566         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6567
6568 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6569
6570         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6571         as it is incorrect.
6572
6573 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6574
6575         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6576         for cctors if needed.
6577
6578 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6579
6580         * mini-ppc.c: Fix build on Darwin.
6581
6582 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6583
6584         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6585         version instead of 3 as valgrind doesn't like version 3.
6586
6587         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6588
6589         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6590         usable for hashing methods.
6591         (emit_extra_methods): Use the new hash to avoid putting every method in the
6592         same hash bucket.
6593
6594         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6595
6596         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6597         whenever a method ref could match a method.
6598         
6599         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6600         test to fail.
6601         
6602         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6603         methods refs.
6604
6605         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6606
6607         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6608         the encoding buffer.
6609
6610         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6611         mono_method_get_header () on inflated methods as an optimization.
6612
6613 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6614
6615         * ssa.c (fold_ins): Fix another crash if the instruction following the
6616         switch was optimized away.
6617
6618 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6619
6620         Contributed under the terms of the MIT/X11 license by Steven
6621         Munroe <munroesj@us.ibm.com>.
6622
6623         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6624
6625 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6626
6627         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6628         around the mono_domain_alloc calls, it is now done by the functions
6629         themselves.
6630
6631         * aot-compiler.c (compile_method): Only add wrappers referenced by
6632         the method if compiling with full AOT.
6633         (mono_compile_assembly): Error out if --aot=full is specified on
6634         a platform where it is not supported.
6635
6636         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6637         on ARM too.
6638
6639         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6640         AOT support.
6641
6642         * aot-runtime.c (load_named_code): Handle 
6643         mono_arm_throw_exception_by_token.
6644
6645         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6646
6647         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6648         unaligned.
6649
6650         * Makefile.am (fullaotcheck): Exit if a test fails.
6651
6652         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6653         on ARM.
6654         (mono_compile_assembly): Handle the assembler failing.
6655
6656         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6657         accepting subsections of .bss.
6658
6659         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6660         was optimized away.
6661
6662         * aot-compiler.c: Remove some unused includes.
6663         
6664         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6665         now in MonoImageWriter.
6666
6667         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6668         code sequence which matches a non-virtual call. Fixes #472654.
6669
6670 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6671
6672         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6673         xdebug code.
6674         
6675         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6676         use the image/dwarf writers directly.
6677
6678         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6679         field.
6680
6681         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6682         MonoDwarfWriter.
6683
6684         * image-writer.h: Fix some typos.
6685
6686         * dwarfwriter.h dwarfwriter.c: New files.
6687         
6688         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6689         separate module.
6690
6691         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6692         argument to return unwind info.
6693
6694         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6695
6696         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6697         
6698         * aot-runtime.c (decode_method_ref): Add a case for 
6699         MONO_AOT_METHODREF_WRAPPER_NAME.
6700
6701         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6702         for AOT.
6703
6704         * aot-compiler.c (encode_method_ref): Use the new constants.
6705
6706         * aot-runtime.c (decode_method_ref): Ditto.
6707
6708         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6709         be compiled, not the icall itself.
6710
6711 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6712
6713         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6714         using decode_method_ref ().
6715
6716         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6717         convert it to an in32. Fixes #475859.
6718
6719         * arrays.cs: Add a test.
6720
6721 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6722
6723         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6724         OP_LCONV_TO_U2.
6725
6726         * basic-long.cs: Add a test.
6727
6728 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6729
6730         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6731         remove the frame pointer in leaf methods which don't receive any
6732         arguments, don't throw exceptions and don't do dynamic stack
6733         allocations.
6734
6735 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6736
6737         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6738         the fail_tramp changes. Hopefully fixes #475132.
6739
6740 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6741
6742         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6743         instead of mono_metadata_signature_dup_full.
6744
6745 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6746
6747         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6748         for processing jump tables. Fixes #473787.
6749
6750 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6751
6752         * mini-generic-sharing.c: mini_method_get_context() just calls
6753         mono_method_get_context_general() now.
6754
6755         * mini.c, mini.h: Moved get_object_generic_inst(),
6756         construct_object_context_for_method() and
6757         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6758
6759 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6760
6761         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6762         basic block fell through to its successor bblock without a branch. Fixes
6763         #474718.
6764
6765         * iltests.il.in: Add a test.
6766         
6767         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6768         (can_encode_patch): We can now handle arrays of generic parameters and
6769         array methods.
6770
6771         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6772
6773         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6774         the AOT file to avoid some #ifdefs in aot-runtime.c
6775
6776         * mini.h: Bump AOT file format version.
6777
6778 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6779
6780         * Makefile.am (fullaotcheck): Make this run the tests.
6781
6782         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6783
6784 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6785
6786         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6787         individually.  Fixes #473482.
6788
6789 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6790
6791         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6792
6793 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6794
6795         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6796         (mono_compile_assembly): Hush compile warnings about
6797         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6798         code path.
6799
6800 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6801
6802         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6803
6804         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6805
6806         * aot-compiler.c: Fix arm support.
6807
6808         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6809         img_writer_emit_unset_mode () function.
6810
6811         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6812         (mono_unwind_get_dwarf_pc_reg): Ditto.
6813
6814         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6815         Move almost all platform specific code to a set of arch_ functions, 
6816         and document them to ease porting.
6817         
6818         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6819
6820         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6821
6822         * aot-compiler.c: Extract the image writing functionality into a separate
6823         module to reduce the size of this file.
6824
6825 2009-02-09  Geoff Norton  <gnorton@novell.com>
6826
6827         * mini-s390.c: Fix the signature of emit_sig_cookie.
6828
6829 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6830
6831         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6832
6833         * aot-runtime.c (is_shared_got_patch): Ditto.
6834
6835         * aot-runtime.c (load_named_code): Cope with the fact that 
6836         decode_got_entry () won't decode the patch fully if its corresponding got
6837         entry is already filled.
6838         
6839         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6840         Initialize *ji.
6841         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6842
6843         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6844         as the moving pointer instead of 'buf' for consistency with the rest of the
6845         codebase.
6846         (mono_arch_create_monitor_exit_trampoline): Ditto.
6847
6848         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6849         generic_class_init trampolines.
6850         (add_generic_class): Extract some code from add_generic_instances () into a
6851         separate function so it can be called from other places too.
6852         (compile_method): Call add_generic_class () for the classes of inflated methods
6853         referenced by the method.
6854         (can_encode_patch): Allow references to generic parameters.
6855
6856         * aot-runtime.c: Add support the patches required by the new trampolines.
6857         
6858         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6859         support.
6860
6861         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6862         full-aot support.
6863
6864         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6865         this from get_throw_pending_exception, make the signature full aot compatible.
6866
6867         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6868
6869         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6870
6871         * exceptions.cs: Add a test.
6872
6873 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6874
6875         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6876         use the DWARF_DATA_ALIGN constant instead.
6877
6878         * exception-<ARCH>.c: Update after the above change.
6879
6880         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6881         dwarf unwinder.
6882
6883         * mini-arm.c: Enable the dwarf unwinder.
6884
6885         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6886         instead of mono_class_setup_vtable ().
6887
6888 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6889
6890         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6891         dwarf unwinder.
6892
6893         * mini-x86.h: Enable the dwarf unwinder.
6894
6895 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6896
6897         Fix mcs/tests/test-7.cs
6898         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6899         2009-02-03.
6900
6901 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * mini.c (print_jit_stats): Remove some unused statistics.
6904
6905 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6906
6907         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6908
6909 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6910
6911         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6912         the method we get from mono_object_get_virtual_method() because
6913         that function does it properly, now.
6914
6915 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6918         opcodes. Fixes #472775.
6919
6920 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6921
6922         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6923         fact that mono_find_jit_info() sometimes returns the context
6924         corresponding to the jit info in new_ctx.  Fixes #472600.
6925
6926 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6927
6928         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6929         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6930         klass->enum_basetype directly.
6931
6932         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6933         enum subtypes.
6934
6935         * unwind.c: Avoid 0 sized arrays.
6936
6937 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6940         size on systems with 64k pages. Fixes #471389.
6941
6942 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6943
6944         Contributed under the terms of the MIT/X11 license by Steven
6945         Munroe <munroesj@us.ibm.com>.
6946
6947         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6948         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6949         necessary.
6950
6951 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6952
6953         Contributed under the terms of the MIT/X11 license by Steven
6954         Munroe <munroesj@us.ibm.com>.
6955
6956         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6957         comparison fix.
6958
6959         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6960         The trampoline can be longer on PPC64.
6961
6962 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6963
6964         Contributed under the terms of the MIT/X11 license by Steven
6965         Munroe <munroesj@us.ibm.com>.
6966
6967         * mini-ppc.c: Compiler warning fixes and trivial code
6968         simplifications.
6969
6970 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6971
6972         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6973         ins->dreg which could be a hardware register, not a vreg.
6974
6975         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6976         
6977         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6978         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6979
6980         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6981         
6982         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6983         ->dreg, that is not the vreg we are looking for.
6984
6985         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6986
6987         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6988         LIVERANGE_END.
6989
6990         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6991         strange crashes.
6992
6993 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6994
6995         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6996
6997         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6998         the line diff is 0.
6999
7000         * aot-compiler.c: Add xdebug support on x86.
7001
7002         * unwind.c: Add x86 support.
7003         
7004         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7005         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7006
7007         * mini.c (mini_method_compile): Ditto.
7008         
7009         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7010         the variable index.
7011
7012         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7013         which mimic .push_section/.pop_section in GAS.
7014         
7015         * aot-compiler.c: Emit precise live range information for variables.
7016
7017         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7018
7019         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7020         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7021         them.
7022
7023         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7024         the live ranges of variables.
7025
7026         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7027         of the variable in terms of native offsets.
7028
7029 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7030
7031         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7032         
7033 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7034
7035         Contributed under the terms of the MIT/X11 license by Steven
7036         Munroe <munroesj@us.ibm.com>.
7037
7038         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7039         order (offset then base reg) for ppc_load_multiple_regs.
7040         (emit_save_saved_regs) Correct operand order for
7041         ppc_store_multiple_regs.
7042         (mono_arch_get_call_filter): Correct operand order for
7043         ppc_load_multiple_regs.
7044
7045         * mini-ppc.c (emit_memcpy): Fix operand order for
7046         ppc_load_reg_update and ppc_store_reg_update.
7047         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7048         (mono_arch_emit_epilog): Correct operand order for
7049         ppc_load_multiple_regs.
7050
7051         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7052         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7053
7054 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7055
7056         * cpu-ppc64.md: Fixed storer4_memindex length.
7057
7058 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7059
7060         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7061         line number info.
7062         
7063         * aot-compiler.c (emit_line_number_info): Optimize this.
7064
7065 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7066
7067         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7068         
7069         * aot-compiler.c: Add debug info for methods without debug info by
7070         emitting an IL file and having the line number info referencing that file.
7071
7072         * aot-compiler.c: Optimize the size of the generated line number info.
7073
7074         * aot-compiler.c: Emit line number info in xdebug mode.
7075
7076         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7077         million arguments.
7078
7079 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7080
7081         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7082
7083         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7084         is used.
7085
7086 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7087
7088         * basic-calls.cs: Test for the weird crash found on arm.
7089         
7090 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7091
7092         * cpu-arm.md: Increase the size of storer8_membase_reg and
7093         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7094
7095         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7096         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7097         reg to LR otherwise we'll be loading/storing from just the offset.
7098
7099 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7100
7101         Question: if we are storing gint32's inside the "*native_offset",
7102         should we change the signature to "gint32 *native_offset" to
7103         ensure that we do not have type definition problems?
7104         
7105         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7106         an int * as this is what the other function expects, causes
7107         problems with Freescale's compiler that defined int32_t to be a
7108         long and makes int incompatible 
7109
7110 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7111
7112         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7113         filename conflict with bjam.
7114
7115 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7116
7117         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7118         as it might use decomposed ops.
7119
7120 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7121
7122         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7123
7124         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7125         is defined.
7126
7127         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7128
7129         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7130         offsets.
7131
7132         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7133         way registers are stored in MonoContext on arm.
7134
7135         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7136         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7137
7138         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7139
7140         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7141
7142         * mini.c (mini_init): Register mono_isfinite.
7143
7144         * jit-icalls.c (mono_isfinite): New jit icall.
7145
7146         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7147         
7148         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7149         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7150         the parent frame.
7151
7152 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7153
7154         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7155         separate frame and stack pointers, so we must use FP to find the register
7156         spill area.
7157         The FP reg is retrieved from the MonoContext::regs array.
7158
7159 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7160
7161         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7162         as FPA requires it.
7163
7164 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7165
7166         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7167         return R4 and R8 when not running under softfloat.
7168
7169         Fixes basic-calls.exe
7170
7171 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * mini-arm.c: Implement some overflow opcodes.
7174
7175 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7176
7177         * ssa.c: handle another alloca.h
7178
7179         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7180         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7181         MONO_ARCH_USE_SIGACTION. 
7182
7183         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7184         capability defines.
7185
7186         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7187
7188         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7189         PPC targets as sigaction does not exist on all platforms, define
7190         this on a per-platform basis.
7191
7192         Instead of erroring out if the platform is not defined, include
7193         mini-ppc-os.h, and expect that the OS specific setting provides
7194         the required information.   
7195
7196 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7197
7198         * aot-compiler.c: Fix --enable-minimal=aot.
7199
7200 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7203         previous change.
7204
7205 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7206
7207         * exceptions-arm.c: Fix warnings.
7208
7209         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7210         ARM.
7211
7212         * mini-x86.c: Fix --enable-minimal=jit build.
7213
7214         * mini.c: Really fix --enable-minimal=jit build.
7215         
7216         * mini.c (construct_object_context_for_method): Move this outside
7217         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7218
7219         "Backported" of r124984 from 2.0 branch.
7220         
7221         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7222
7223         "Backport" of r124977 + r124978 from 2.0 branch.
7224         
7225         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7226         to avoid calling mono_exception_from_token () from the throw trampoline.
7227         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7228         for throwing corlib exceptions, this fixes full-aot support for corlib
7229         exceptions.
7230
7231         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7232
7233 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7234
7235         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7236         part of the changes to split the code in mini into operating
7237         system specific files.
7238
7239         This patch was done by copying mini.c to the respective files to
7240         preserve SVN history.
7241
7242 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7243
7244         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7245
7246 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7247
7248         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7249         remoting-invoke-with-check wrappers of shared methods.
7250
7251         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7252
7253 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7254
7255         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7256         optimization if the top of stack is the last instruction in the
7257         bblock.  Otherwise it might have been used after its definition.
7258         Fixes #469742.
7259
7260 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7261
7262         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7263         method as well when get_vcall_slot () fails to match a code sequence.
7264
7265         * mini-arm.c: Fix the android build, which doesn't have
7266         __aeabi_read_tp.
7267
7268 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7271         the s390x build.
7272
7273 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7274
7275         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7276
7277 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7278
7279         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7280         and put its id into jinfo->used_regs. This is only used on amd64,
7281         which is currently the only platform generating unwind info.
7282
7283         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7284         the dwarf unwinder. This is required to correctly handle async exceptions
7285         like thread abort and stack overflows, which can happen while a method
7286         is in the middle of its prolog or epilog.
7287         
7288         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7289         the unwind info belonging to an AOTed method.
7290
7291         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7292         into cfg->unwind_ops.
7293         
7294         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7295
7296         * mini.c (mini_init): Call mono_unwind_init ().
7297         (mini_cleanup): Call mono_unwind_cleanup ().
7298
7299         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7300         unwind info to be shared between methods.
7301
7302         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7303         saved in the LMF.
7304
7305         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7306         get_throw_pending_exception () to avoid initialization races.
7307
7308         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7309         mono_arch_exceptions_init () function.
7310
7311         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7312
7313 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7314
7315         * mini.c (mono_get_domain_intrinsic): New helper function.
7316         (mono_get_thread_intrinsic): Ditto.
7317
7318         * mini-arm.c mini-ia64.c: Use the new helper functions.
7319         
7320         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7321         the last constrained_call change, since it is needed in the non-AOT
7322         case as well.
7323
7324         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7325         
7326         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7327         mono_get_lmf_addr () on arm eabi linux.
7328
7329 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7330
7331         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7332         code sequence which matches a non-virtual call.
7333
7334 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7335
7336         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7337         stack pointer (r1).
7338
7339 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7340
7341         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7342         runtime-invoke wrappers, since they are also shared based on signature.
7343
7344 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7345
7346         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7347         info from the (correct) context.
7348
7349 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7350
7351         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7352         
7353         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7354         using dwarf unwinding info. Not yet used.
7355
7356         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7357
7358 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7359
7360         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7361         descriptors.
7362
7363         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7364         special case and handle mono_arch_delegate_invoke_impl() returning
7365         function descriptors.
7366
7367         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7368         trampolines return function descriptors, too.
7369
7370 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7371
7372         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7373         out_of_line optimization.
7374
7375 2009-01-21  Martin Baulig  <martin@ximian.com>
7376
7377         * mini.h
7378         (MonoCompile): Added `disable_deadce_vars' to disable removing
7379         unused variables.
7380
7381         * mini.c
7382         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7383         inside the debugger.
7384
7385         * liveness.c (mono_analyze_liveness): Don't remove any unused
7386         variables if `cfg->disable_deadce_vars' is set.
7387
7388 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7389
7390         * method-to-ir.c: Only apply exception constructor optimization if
7391         the the method actually belongs to an exception class.  Fixes
7392         #467456.
7393
7394 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7395
7396         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7397         change inside a #ifdef __mono_ppc64__.
7398
7399         * aot-compiler.c (compile_method): Remove the previous limitation.
7400
7401         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7402         on type variables in AOTed code.
7403         
7404         * aot-compiler.c (compile_method): Skip generic methods having type 
7405         constraints on their generic parameters.
7406
7407         * aot-compiler.c (compile_method): Check for methods which cannot be
7408         encoded inside RGCTX_FETCH patches as well.
7409
7410         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7411         build.
7412
7413 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7414
7415         * method-to-ir.c: Force the vtable variable in shared generic code
7416         for the case that they might show up on a stack trace where they
7417         are needed.
7418
7419         * mini-exceptions.c: Save and use generic sharing info as well as
7420         IP in stack traces to resolve shared generic instantiations.
7421
7422 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7423
7424         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7425         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7426
7427 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7428
7429         * method-to-ir.c: Do generic sharing for array constructors.
7430
7431 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7432
7433         * mini-exceptions.c (mono_print_thread_dump): Add information
7434         about the thread state using wapi_current_thread_desc.
7435
7436 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7437
7438         * basic-simd.cs: Tests for the new constructors. 
7439
7440 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7441
7442         * mini-ops.h: Added OP_EXPAND_*
7443
7444         * cpu-x86.md: Same.
7445
7446         * mini-x86.c (mono_arch_output_basic_block): Same.
7447         
7448         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7449
7450 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7451
7452         * iltests.il.in: Add a test for #467385.
7453
7454 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7455
7456         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7457         thread been cleaned up is not the same currently in execution.
7458
7459         Fixes appdomain-unload crashes on windows, osx and linux variants
7460         without the __thread keyword.
7461
7462 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7463
7464         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7465         (koush@koushikdutta.com). Implement this for android.
7466
7467         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7468         begins with a digit.
7469
7470         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7471         mono_marshal_get_write_barrier ().
7472
7473 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7474
7475         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7476         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7477         that pass them on a register pair.
7478
7479         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7480         test was crashing due to that.
7481
7482 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7483
7484         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7485         trampoline code. Include ucontext.h only if available.
7486
7487 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7488
7489         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7490         and doesn't check whether it's sharable, like it was before
7491         removing the shared generics hash.  This brings IronPython
7492         performance back to what it was before that change.
7493
7494 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7495
7496         * method-to-ir.c: Handle delegate invocation optimization earlier,
7497         otherwise it would be handled (much more slowly) by the
7498         final/sealed optimization.
7499
7500 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7501
7502         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7503         domain is not set. Fixes #465864.
7504
7505 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7506
7507         * method-to-ir.c: Don't stop sharing of generic methods with catch
7508         clauses - we already handle those.
7509
7510 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7511
7512         * mini.c, mini.h: lookup_generic_method() is now
7513         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7514         making the shared_generics_hash obsolete.
7515
7516 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7517
7518         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7519         use the red zone.  Make room on the stack first and then use it,
7520         not the other way around.
7521
7522 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7523
7524         * mini.c (mini_init): Call mono_xdebug_init ().
7525
7526         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7527
7528 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7529
7530         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7531
7532         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7533         trampolines.
7534
7535         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7536         debug+unwind info for trampolines.
7537
7538         * mini.c (mono_create_unwind_op): New helper function.
7539
7540         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7541
7542 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7543
7544         * aot-compiler.c: Fix the build.
7545
7546 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7547
7548         * Makefile.am: Update dtrace-prelink.sh location.
7549
7550 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7551
7552         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7553         optimization. Fixes #464520.
7554
7555 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7556
7557         * mini-amd64.c : Adding code to save/restore non-volatile registers
7558            on Winx64.
7559
7560         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7561           registers on Winx64.
7562
7563         Contributed under MIT/X11 license.
7564
7565 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7566
7567         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7568         __GNUC_MINOR__ which can break when the major version changes.
7569
7570 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7571
7572         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7573
7574 2009-01-07  Geoff Norton  <gnorton@novell.com>
7575
7576         * helpers.c:  Allow mono -v -v -v to work on darwin.
7577
7578 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7579
7580         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7581           pattern. 
7582
7583         Contributed under MIT/X11 license.
7584
7585 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7586
7587         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7588         instead of directly accessing type->data.klass. Fixes #462016.
7589         (mono_allocate_stack_slots_full): Ditto.
7590
7591         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7592         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7593
7594         * aot-compiler.c (emit_plt): Fix ARM build.
7595
7596 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7597
7598         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7599         
7600         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7601         change.
7602
7603         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7604         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7605         #463357.
7606
7607         * iltests.il.in: Add a regression test.
7608
7609 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7610
7611         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7612
7613 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7614
7615         * basic-simd.cs: Add a regression test for #462457.
7616
7617 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7618
7619         * mini-ops.h: Add a definition of XPHI.
7620
7621         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7622
7623         * ssa.c (op_phi_to_move): Handle XPHI.
7624
7625         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7626
7627         Fixes #462457
7628
7629 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7630
7631         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7632
7633 2008-12-31  Geoff Norton  <gnorton@novell.com>
7634
7635         * mini-ppc.c: The prolog size allocated can be too small for darwin
7636         ppc32 under certain circumstances.  Also fix a small logic bug.
7637
7638 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7639
7640         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7641         while loading AOT methods.
7642
7643         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7644         since only the former is nulled out after a successful cast. This prevents
7645         crashes with rethrown exceptions when using --debug=casts.
7646
7647 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7648
7649         * mini.h: New macro for checking whether a method is final,
7650         i.e. whether the method or its class is marked final.
7651
7652         * method-to-ir.c: Use the new macro for all final-checks
7653         consistently.  Fixes the crash in the System.ServiceModel tests.
7654
7655 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7656
7657         * mini-exceptions.c (get_exception_catch_class): Corrected another
7658         overly strict assertion.
7659
7660 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7661
7662         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7663         Clobbering it is not allowed because the caller might use it as
7664         the vtable register in the interface call.
7665
7666 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7667
7668         * mini-exceptions.c (get_exception_catch_class): Corrected an
7669         overly strict assertion.
7670
7671 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7672         
7673         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7674
7675         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7676
7677         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7678
7679         * cpu-mips.md: correct lengths for certain long_ opcodes.
7680
7681         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7682
7683         * 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().
7684         
7685 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7686
7687         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7688         
7689 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7690         
7691         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7692         
7693 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7694
7695         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7696         next basic block.
7697         
7698 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7699
7700         * 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
7701
7702         * 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)
7703         
7704 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7705         
7706         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7707         
7708 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7709
7710         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7711         gshared code. Fixes #458947.
7712
7713         * generics.cs: Add a test.
7714
7715 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7716         
7717         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7718         
7719         * mini-mips.c: first pass n32 code generation.
7720
7721         * mini-mips.h: datatypes and defines for n32 support.
7722
7723         * exceptions-mips.c: first pass n32 code generation.
7724         
7725         * tramp-mips.c: first pass n32 code generation.
7726         
7727         * cpu-mips.md: add long_ opcodes.
7728         
7729 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7730
7731         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7732
7733         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7734         
7735         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7736         
7737         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7738
7739         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7740
7741         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7742
7743         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7744
7745         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7746
7747         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7748
7749 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7750
7751         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7752
7753 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7754
7755         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7756
7757 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7758
7759         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7760         descriptors for helper functions directly in front of the code.
7761
7762 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7763
7764         * method-to-ir.c: Removed an unnecessary assertion.
7765
7766 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7767
7768         * method-to-ir.c: Merge SGEN changes from the old JIT.
7769
7770 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7771
7772         * driver.c (compile_all_methods_thread_main): Handle failure of
7773         mono_get_method ().
7774
7775 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7776
7777         * mini-ppc.c: Merged with mini-ppc64.c.
7778
7779         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7780
7781         * Makefile.am: Use the same sources for PPC and PPC64.
7782
7783         * mini-ppc64.c: Removed.
7784
7785 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7786
7787         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7788         code to mono_bb_is_fall_through.
7789         
7790         * branch-opts.c (mono_remove_critical_edges): Same.
7791
7792 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7793
7794         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7795         expect that an OP_BR_REG will be there.
7796
7797 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7798
7799         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7800         for the many branch ops. The original check miss OP_BR_REG.
7801
7802         Fixes #457574.
7803         
7804 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7805
7806         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7807
7808 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7809
7810         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7811         while holding the aot lock.
7812
7813 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7814
7815         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7816         
7817 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7818
7819         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7820           to release all runtime callable wrappers held by the runtime.
7821
7822         Contributed under MIT/X11 license.
7823
7824 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7825
7826         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7827           for Winx64.
7828
7829         Contributed under MIT/X11 license.
7830
7831 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7832
7833         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7834         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7835
7836 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7837
7838         * cpu-mips.md: fix ckfinite length
7839
7840         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7841         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7842         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7843         
7844 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7845
7846         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7847         
7848 2008-12-08  Geoff Norton  <gnorton@novell.com>
7849
7850         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7851         size by 8 bytes as well.
7852
7853 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7854
7855         * basic-simd.cs: Fix method names for Vector16b.
7856         
7857 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7858
7859         * basic-simd.cs: Fix method names for Vector16sb.
7860
7861 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7862
7863         * basic-simd.cs: Fix method names for Vector8us.
7864         
7865 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7866
7867         * basic-simd.cs: Fix method names for Vector8s.
7868         
7869 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7870
7871         * basic-simd.cs: Fix method names for Vector4ui.
7872
7873 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7874
7875         * basic-simd.cs: Fix method names for Vector2l.
7876
7877 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7878
7879         * basic-simd.cs: Fix method names for Vector2d.
7880
7881 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7882
7883         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7884         that are extension methods.
7885
7886 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7887
7888         * basic-simd.cs: Fix method names for Vector4f.
7889
7890 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7893         as such. Fixes #456669.
7894
7895 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7896
7897         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7898         
7899 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7900
7901         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7902         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7903         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7904         (mips_adjust_stackframe): handle FP spills
7905                 
7906         * mini-ops.h: add mips_mtc1_s2
7907         
7908         * cpu-mips.md: add mips_mtc1_s2
7909         
7910 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7911
7912         * unwind.c: New file, move the unwind info encoding functions here from
7913         aot-compiler.c, so they could be used at runtime too.
7914
7915 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7916
7917         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7918         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7919         
7920 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7921
7922         * mini-mips.c: cleanup warnings
7923         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7924         (mips_adjust_stackframe): handle case of taking the address of stack locals
7925         
7926 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7927
7928         * aot-compiler.c: Implement a few functions missing from the asm writer.
7929         (emit_method_code): Only write symbols for methods when using the bin
7930         writer, since the assembler can't deal with the characters in our method
7931         names.
7932
7933         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7934
7935         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7936         call.
7937
7938         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7939         a bit to also restore %rax.
7940
7941 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7942
7943         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7944
7945 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7946
7947         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7948         arguments.
7949
7950 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7951
7952         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7953
7954         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7955         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7956
7957         * exceptions-ppc64.c: Removed.
7958
7959         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7960
7961 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7962
7963         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7964         tramp-ppc64.c.
7965
7966         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7967
7968         * tramp-ppc64.c: Removed.
7969
7970 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7973         the TYPESPEC table.
7974
7975 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7976
7977         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7978
7979         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7980         mini-ppc.h instead of mini-ppc64.h.
7981
7982         * mini-ppc64.h: Removed.
7983
7984 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7985
7986         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7987         
7988         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7989         
7990 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7991
7992         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7993         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7994         code easier.
7995
7996 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7997
7998         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7999
8000 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8001
8002         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8003
8004 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8005
8006         * basic-simd.cs: Tests for operator == and != on Vector4f.
8007
8008 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8009
8010         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8011
8012         * simd-intrinsics.c: Kill useless enum.
8013
8014 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8015
8016         * cpu-mips.md: add long_conv_to_ovf_i4_2
8017         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8018
8019 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8020
8021         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8022         
8023         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8024
8025 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8026
8027         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8028         
8029 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8030
8031         * basic-simd.cs: Add tests for new methods.
8032
8033 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8034
8035         * simd-intrinsics.c: Add support for operator == and !=
8036         on Vector4(u)i.
8037
8038         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8039
8040 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8041
8042         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8043
8044 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8045
8046         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8047
8048         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8049         MONO_PATCH_INFO_ICALL_ADDR.
8050
8051         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8052
8053         * aot-compiler.c: Resurrect full-aot support.
8054
8055 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8056
8057         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8058         
8059 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8060
8061         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8062         
8063 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8064
8065         * basic-simd.cs: Fix tests to work under ppc.
8066         Remove tests for methods that will be removed.
8067
8068 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8069
8070         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8071         generic type (via a typedef or typeref) correctly.
8072
8073 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8074
8075         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8076         diagnose an assertion failure.
8077
8078 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8079
8080         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8081         Fix trampoline size.
8082
8083         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8084         conversion opcodes are implemented natively instead via emulation.
8085
8086 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8087
8088         * cpu-mips.md: remove mips_xori
8089
8090         * mini-ops.h:  remove mips_xori
8091
8092         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8093
8094         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8095         
8096         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8097         
8098 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8099
8100         * cpu-mips.md: fix instruction lengths.
8101
8102         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8103
8104         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8105
8106         * mini-ops.h: fix slti / sltiu op profiles.
8107         
8108 2008-12-02  Martin Baulig  <martin@ximian.com>
8109
8110         * method-to-ir.c (mono_method_to_ir): Disable debugging
8111         information for the init locals block to make the debugger stop
8112         after all locals have been initalized.
8113
8114 2008-12-02  Martin Baulig  <martin@ximian.com>
8115
8116         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8117         running inside the debugger.
8118
8119 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8120
8121         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8122         is enabled.
8123
8124         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8125         alu->alu imm optimization which only shows if deadce is disabled.
8126
8127         * aot-compiler.c: Rename the function names for the binary and asm writers
8128         so they can coexist in the same process. Rework the xdebug code to use the
8129         asm writer. This avoids the need to call into the runtime to dump the
8130         debugging info. Add more debugging info for types.
8131
8132         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8133
8134         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8135         cpu description tables, they can't occur in cpu-<ARCH>.md.
8136
8137         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8138         the stack in CEE_LDFLDA. Fixes #450542.
8139
8140         * generics.cs: Add a new test.
8141
8142 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8143
8144         * mini-ops.h: updated MIPS opcodes
8145         * mini-mips.c: decompose long opts
8146         * mini-mips.h: decompose long opts
8147         
8148 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8149
8150         * cpu-mips.md: fix length on int_rem_un
8151         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8152         
8153 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8154
8155         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8156
8157         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8158
8159 2008-11-29  Martin Baulig  <martin@ximian.com>
8160
8161         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8162         mono_debug_using_mono_debugger() in addition to the
8163         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8164
8165 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8166
8167         * mini-ops.h: updated more MIPS opcodes
8168         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8169         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8170         
8171 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8172
8173         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8174
8175 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8176
8177         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8178         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8179         * mini-ops.h: correct selected mips opcode entries
8180         
8181 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8182
8183         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8184         make them work.
8185
8186 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8187
8188         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8189
8190 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8191
8192         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8193         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8194         * mini-mips.h: disable IMT
8195         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8196         
8197 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8198
8199         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8200
8201 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8202
8203         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8204
8205 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8206
8207         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8208         consistency.
8209
8210 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8211
8212         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8213         for Set/GetVector aligned versions.
8214
8215 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8216
8217         * basic-simd.cs: Add tests for Get/SetVector.
8218
8219 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8220
8221         * mini.c: Removed g_slist_append_mempool().  Now in
8222         metadata/mempool.c.
8223
8224 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8225
8226         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8227         size properly and make the bounds check optional.
8228
8229         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8230         for SetVector and IsAligned.
8231
8232 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8233
8234         * mini.c: Remove unused mono_normalize_opcodes () function.
8235
8236 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8237
8238         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8239         using the new atomic add ops now.
8240
8241         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8242         add.
8243
8244 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8245
8246         * mini-ppc64.c: Several fixes.
8247
8248 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8249
8250         * cpu-mips.md: added jump_table
8251         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8252
8253 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8254
8255         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8256
8257 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8258
8259         * mini-ops.h: corrected a handful of MIPS opcodes.
8260
8261 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8262
8263         * aot-compiler.c: MIPS to use ELF writer
8264
8265 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8266
8267         * mini-codegen.c: remove MIPS specific assert.
8268
8269 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8270
8271         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8272         fixes.  PPC64 now passes most of the runtime regressions.
8273
8274 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8275
8276         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8277         volatile intervals a bit.
8278
8279 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8280
8281         * basic-long.cs: New test case.
8282
8283 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8284
8285         * mini.c (mini_method_compile): Disable globalra for large methods for 
8286         now.
8287
8288         * regalloc2.c (order_moves): Add fp support.
8289
8290         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8291         source bblock ends with an OP_BR_REG.
8292
8293         * ratests.cs: Add a new test.
8294
8295 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8296
8297         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8298         sharing.  PPC64 now passes generics.exe.
8299
8300 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8301
8302         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8303
8304 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8305
8306         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8307         memory when mono_jit_info_table_find () can't find the method in the
8308         LMF case.
8309
8310         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8311         AOTed code too.
8312         
8313         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8314         writer too.
8315
8316 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8317
8318         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8319         Several fixes.  PPC64 now runs exceptions.exe and
8320         devirtualization.exe.
8321
8322 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8323
8324         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8325         arrays.exe and basic-math.exe.
8326
8327 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8328
8329         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8330         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8331
8332 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8333
8334         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8335
8336 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8337
8338         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8339
8340         * ir-emit.h: Move macros from method-to-ir.c to here.
8341
8342 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8343
8344         * mini-ops.h: Correct the long simd ops to use LREG.
8345
8346 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8347
8348         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8349         
8350         * mini-ops.h: Correct the dreg type of a few long opcodes.
8351
8352         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8353         Add netbsd support.
8354
8355 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8356
8357         * mini-ppc.c: remove negative stack references in epilog
8358         for platforms that don't support the red zone.
8359
8360 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8361
8362         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8363         point regs.  Now PPC64 passes basic-calls.exe.
8364
8365 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8366
8367         * basic-simd.cs: Add tests for accessors of Vector2l.
8368
8369 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8370
8371         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8372
8373         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8374         
8375         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8376
8377 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8378
8379         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8380         PPC64 passes basic-long.exe.
8381
8382 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8383
8384         * decompose.c: Decompose carry and overflow add on PPC64 like on
8385         other 64 bit archs.  Don't decompose sub at all on PPC64.
8386
8387         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8388         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8389         basic-long.exe.
8390
8391 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8392
8393         * basic-simd.cs: Add tests for accessors of Vector2d.
8394
8395 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8396
8397         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8398
8399         * cpu-x86.md: Same.
8400
8401         * mini-x86.c (mono_arch_output_basic_block): Same.
8402         
8403         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8404
8405 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8406
8407         * basic-simd.cs: Add tests for accessors of Vector4f.
8408
8409 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8410
8411         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8412
8413         * cpu-x86.md: Same.
8414
8415         * mini-x86.c (mono_arch_output_basic_block): Same.
8416         
8417         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8418
8419 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8420
8421         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8422
8423 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8424
8425         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8426
8427         * cpu-x86.md: Same.
8428
8429         * mini-x86.c (mono_arch_output_basic_block): Same.
8430         
8431         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8432
8433 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8434
8435         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8436
8437 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8438
8439         * simd-intrinsics.c: Enable setters for Vector16sb.
8440
8441 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8442
8443         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8444
8445         * cpu-x86.md: Same.
8446
8447         * mini-x86.c (mono_arch_output_basic_block): Same.
8448         
8449         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8450
8451 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8452
8453         * simd-intrinsics.c: Implement setter for Vector8us.
8454
8455 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8458         for dead variables.
8459
8460 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8461
8462         * mini-ppc.c: remove references to the red zone in the prolog
8463         (for systems that don't support it).
8464
8465 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8466
8467         * cpu-ppc64.md: Fixed a few instruction lengths.
8468
8469         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8470         now.
8471
8472 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8473
8474         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8475         basic.exe now.
8476
8477 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8478
8479         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8480
8481 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8482
8483         * mini-ops.h: Added OP_INSERT_I2.
8484
8485         * cpu-x86.md: Same.
8486
8487         * mini-x86.c (mono_arch_output_basic_block): Same.
8488         
8489         * simd-intrinsics.c: Implement setter for Vector8s.
8490
8491         * simd-methods.h: Add the names of get setters of Vector8s.
8492
8493 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8494
8495         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8496         
8497         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8498         parameters.
8499
8500         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8501
8502 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8503
8504         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8505         for PPC64.  An empty program runs now.
8506
8507 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8508
8509         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8510
8511         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8512         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8513         info for JITted code is emitted into a shared library, loadable into gdb.
8514
8515 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8516
8517         * Makefile.am: Changes to build PPC64.
8518
8519         * mini-arch.h: Include mini-ppc64.h on PPC64.
8520
8521 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8522
8523         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8524         in PPC code up to r119147.
8525
8526 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8527
8528         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8529         cpu-ppc64.md: Changes for PPC64.
8530
8531         Based on code submitted by andreas.faerber@web.de at
8532         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8533         X11/MIT license.
8534
8535 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8536
8537         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8538         cpu-ppc64.md: Copied from the corresponding PPC files from
8539         r118846.
8540
8541 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8542
8543         * mini-ops.h: Added OP_ROUND.
8544
8545         * cpu-x86.md: Added round.
8546
8547         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8548
8549         * basic-math.cs: Added test_0_round to test rounding.
8550
8551         Contributed under MIT/X11 license.
8552
8553 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8554
8555         * aot-compiler.c : Fix the Winx64 build.
8556
8557         Contributed under MIT/X11 license.
8558
8559 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8560
8561         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8562         in OP_EXTRACT_R8 to avoid possible stack corruption.
8563
8564 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8565
8566         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8567
8568         * cpu-x86.md: Added extract_r8.
8569
8570         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8571         
8572         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8573         a couple of OP_EXTRACT_I4.
8574
8575         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8576
8577         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8578
8579 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8580
8581         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8582         and not 4.1. 
8583
8584 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8585
8586         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8587         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8588
8589         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8590         are not needed any more.
8591
8592         * mini.h: Remove the unused INS_LIST macros.
8593
8594         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8595         longer needed.
8596
8597         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8598         ir-emit.h.
8599
8600         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8601         mono_alloc_ireg () instead.
8602
8603         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8604         macros.
8605
8606         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8607         on amd64.
8608
8609         * aot-runtime.c (load_aot_module): Disable AOT when running under
8610         CAS.
8611
8612         * mini-amd64.h: Change the monitor fastpath defines to check for
8613         !PLATFORM_WIN32 so they work on *bsd too.
8614
8615         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8616
8617         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8618
8619         * mini.h (MonoCompile): Remove new_ir flag.
8620
8621         * regalloc.h regalloc.c: Remove unused code.
8622
8623         * cpu-*.md: Remove more unused opcodes.
8624
8625         * simple-cee-ops.h simple-mini-ops.h: Removed.
8626
8627         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8628         
8629 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8630
8631         * aliasing.h: Removed.
8632
8633         * *.c: Remove references to aliasing.h and inssel.h.
8634
8635         * mini.c: Remove additional unused functions.
8636
8637         * mini-ops.h cpu-*.md: Remove unused opcodes.
8638
8639 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8640
8641         Remove the old JIT code.
8642
8643         * inssel*.brg: Removed.
8644
8645         * ssa.c abcremoval.c aliasing.c: Removed.
8646
8647         * ssa2.c: Renamed to ssa.c.
8648
8649         * abcremoval2.c: Renamed to abcremoval.c.
8650
8651         * *.c: Removed all !cfg->new_ir code.
8652
8653         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8654         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8655
8656         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8657         
8658 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8659
8660         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8661         to simplify the code and cut back on the number of global symbols in the AOT
8662         file.
8663         
8664         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8665
8666 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8667
8668         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8669         with the got/got_info tables.
8670
8671         * mini.h: Bump AOT file format version.
8672         
8673         * unwind.h: New file, contains definitions for stack unwinding.
8674
8675         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8676         to cfg->unwind_ops.
8677         
8678         * aot-compiler.c: Generalize the emitting of unwind information to use the
8679         information in cfg->unwind_ops.
8680
8681         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8682
8683         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8684         AOT method frames. Enable writing symbols for methods by default.
8685
8686 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8687
8688         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8689         and make it work with vectors of element sizes 1, 2 and 4.
8690
8691         * simd-intrinsics.c: Enable getter for all vectors with element size
8692         1, 2 or 4.
8693
8694         * simd-methods.h: Add the names of other getters.
8695
8696         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8697
8698         * cpu-x86.md: Same.
8699
8700         * mini-x86.c: Same.
8701
8702 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8703
8704         * mini-ppc.h: portability fix.
8705
8706 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8707
8708         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8709         buggy and will overwrite it.
8710
8711 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8712
8713         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8714         Use it to emit local symbols for all methods so AOTed methods show up with
8715         their full name in gdb/valgrind output.
8716
8717 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8718
8719         * mini-ppc.c: portability fixes.
8720
8721 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8722
8723         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8724         entries out of the if (!generic_shared...) code so it is always done.
8725         (mono_class_init_trampoline): Do the patching when running under valgrind
8726         too, newer versions of valgrind have no problems with it.
8727
8728 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8729
8730         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8731         further sections.
8732
8733 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8734
8735         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8736         filters.
8737
8738 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8739
8740         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8741
8742 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8743
8744         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8745
8746         * cpu-x86.md: Same.
8747
8748         * mini-x86.c: Same.
8749
8750         * simd-intrinsics.c: Same.
8751
8752 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8753
8754         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8755
8756 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8757
8758         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8759         to work with more Vector types.
8760
8761 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8762
8763         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8764         store the elemens directly instead of using and intermediate.
8765
8766 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8769
8770         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8771         to preserve %eax for aot plt trampolines.
8772
8773         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8774         (encode_method_ref): Flag synchronized methods so they won't go through
8775         the AOT trampoline.
8776
8777         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8778         wrappers.
8779
8780         * cpu-ia64.md (jmp): Increase max length.
8781
8782 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8783
8784         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8785         open generic classes.
8786
8787         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8788
8789         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8790         box+brtrue optimization since it causes test failures on x86.
8791
8792 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8793
8794         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8795
8796         * cpu-x86.md: Same.
8797
8798         * mini-x86.c: Same.
8799
8800         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8801         for simd ctor values. 
8802
8803         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8804         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8805
8806 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8807
8808         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8809         LogicalRightShift.
8810
8811         * simd-instrincs.c: Same.
8812
8813         * basic-simd.cs: Same.
8814
8815 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8816
8817         * ratests.cs: Add more tests.
8818
8819         * regalloc2.c (add_spill_code): Handle more corner cases.
8820
8821 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8822
8823         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8824         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8825         both the source an destination of an instruction.
8826
8827 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8828
8829         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8830         wapihandles.c: more portability changes.
8831
8832 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8833
8834         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8835         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8836         safe to execute in a signal handler and the kernel provides better
8837         the info in /proc/self/smaps. Avoid the assert on sigaction during
8838         cleanup.
8839
8840 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8841
8842         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8843         do the bblock linking hack if it is actually needed.
8844
8845         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8846         up linking.
8847
8848         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8849         crash problem is fixed.
8850
8851         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8852         bblocks.
8853
8854         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8855         for catch clauses.
8856         (mini_method_compile): Set the starting value of next_vreg to 
8857         MAX_IREGS + MAX_FREGS when using globalra.
8858
8859         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8860         filter clauses with BB_EXCEPTION_HANDLER.
8861
8862         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8863
8864 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8865
8866         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8867         space for stdcall.  Fixes regressions on Win32.
8868
8869 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8872         bblocks.
8873         (linear_scan): Remove an assert which doesn't seem to be needed.
8874
8875         * local-propagation.c (mono_local_deadce): Avoid a call to
8876         MONO_DELETE_INS which would screw up the instruction linking.
8877
8878         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8879
8880         * regalloc2.c: Upgrade to work the current JIT code.
8881
8882 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8883
8884         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8885         case.
8886
8887         * aot-runtime.c: Remove some dead code.
8888
8889         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8890         consistency.
8891         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8892
8893         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8894         trampolines using sscanf since atoi doesn't work on large unsigned values.
8895
8896         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8897         Initialize code_size.
8898
8899 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8900
8901         * method-to-ir.c (mini_emit_inst_for_method): Make
8902         Interlocked.CompareExchange work for Int arguments on 32 bit
8903         archs, as well.
8904
8905 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8906
8907         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8908
8909 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8910
8911         * main.c Fix MSVC build.
8912
8913         Contributed under MIT/X11 license.
8914
8915 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8916
8917         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8918         alignment larger than 8 bytes are aligned correctly, too.
8919
8920         * mini.c: Honor the min_align field of MonoClass when laying out
8921         the stack.
8922
8923 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8926
8927         * aot-compiler.c (emit_plt): Fix a warning.
8928         
8929         * aot-compiler.c: Implement ARM support in the binary writer.
8930
8931 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8932
8933         * basic-simd.cs: Add test for getter with byref arg.
8934         Fix the naming of a few tests.
8935         Add missing checks to a test.
8936
8937 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8938
8939         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8940
8941         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8942         most of the full-aot support for monitor enter/exit trampolines.
8943
8944         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8945         enter/exit trampoline creation functions.
8946
8947         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8948         make dist.
8949
8950 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8951
8952         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8953         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8954         implement the needed functionality without adding crap to the runtime.
8955
8956 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8957
8958         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8959         non-x86 builds.
8960
8961         * mini.c (mono_build_date): New global version holding the build date in
8962         string format.
8963         
8964         * Makefile.am (buildver.c): Generate a file containing the build date.
8965
8966         * main.c: Set the build date from the generated file.
8967
8968         * mini.c (mono_get_runtime_build_info): New helper function returning build
8969         information in a string format.
8970         
8971         * driver.c (mono_main): Print the build date in --version.
8972
8973         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8974         file when the bind-to-runtime-version option is used.
8975
8976 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8977
8978         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8979
8980 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8981
8982         * simd-methods.h: Rename prefetch methods.
8983
8984         * simd-intrinsics.c: Same.      
8985
8986 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8987
8988         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8989         sizes.
8990
8991 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8992
8993         * aot-compiler.c: Use the bundled elf header files instead of depending on
8994         the system one.
8995         
8996         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8997         mempool.
8998
8999         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9000         on every call.
9001
9002 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9003
9004         * cpu-x86.md: Add store nta ops.
9005
9006         * mini-ops.h: Same.
9007
9008         * mini-x86.c: Same.
9009
9010         * mini.h: Add an enum for simd prefetch modes.
9011
9012         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9013         of store. Use the changed code to support store nta.
9014
9015         * simd-intrinsics.c: Add prefetch ops for all vector types.
9016
9017 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9018
9019         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9020         threads.
9021         
9022         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9023         names.
9024
9025         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9026         trampolines.
9027
9028 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9029
9030         * mini-x86.c: Fixed commit.
9031
9032 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9033
9034         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9035
9036 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9037
9038         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9039         and MONITOR_EXIT, for the ASM fastpaths.
9040
9041         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9042         available.
9043
9044         * mini.c, patch-info.h: Signature and patch infos for
9045         Monitor.Enter/Exit trampolines.
9046
9047         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9048
9049         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9050         Monitor.Enter/Exit ASM fastpath for Linux.
9051
9052 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9053
9054         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9055
9056         * objects.cs: Add a new test.
9057         
9058         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9059
9060         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9061         if MONO_LOG_LEVEL is set.
9062
9063         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9064
9065         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9066
9067         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9068         
9069         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9070         of file offsets. Align the sections belonging to the data segment to 
9071         PAGESIZE.
9072
9073 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9074
9075         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9076         elf.h. Port it to amd64.
9077
9078 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9079
9080         * driver.c: Enable SIMD by default.
9081
9082 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9083
9084         * cpu-x86.md: Add prefetch op.
9085
9086         * mini-ops.h: Same.
9087
9088         * mini-x86.c: Same.
9089
9090         * mini.h: Add an enum for simd prefetch modes.
9091
9092         * simd-methods.h: Add prefetch function names.
9093
9094         * simd-intrinsics.c: Add prefetch ops for all vector types.
9095
9096 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * aot-compiler.c (emit_bytes): Speed this up a little.
9099
9100 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9101
9102         * aot-compiler.c: Add JIT time etc. statistics.
9103         
9104         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9105
9106         * mini.h (MonoCompile): Add 'got_offset' field.
9107
9108         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9109         method_got_offsets array.
9110
9111         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9112         wrappers.
9113
9114         * aot-compiler.c (compile_method): Add generic method instances referenced
9115         by the method to the list of methods to be compiled, this is required so if
9116         A<T> references B<T>, and another assembly references A<int>, then it will
9117         also get a copy of B<int>.
9118
9119         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9120         when checking for monitor enter/exit.
9121
9122 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9123
9124         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9125         for Monitor.Enter and Monitor.Exit if enabled.
9126
9127         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9128         Solaris.
9129
9130 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9131
9132         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9133         of an OP_MOVE. Fixes #440046.
9134
9135         * basic-long.cs: Add a new test.
9136
9137 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9138
9139         * mini.h: Add synchronization note for the managed counter-part.
9140
9141         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9142         returns the simd caps of the current cpu.
9143
9144 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9145
9146         * basic-simd.cs: Remove Console.WriteLine.
9147
9148 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9149
9150         * basic-simd.cs: New tests for Vector2ul.
9151
9152 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9153
9154         * simd-intrinsics.c: Add new vector type Vector2ul.
9155
9156 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9157
9158         * basic-simd.cs: New tests for Vector2l.
9159
9160 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9161
9162         * cpu-x86.md: Add long version of most packed int ops.
9163
9164         * mini-ops.h: Same.
9165
9166         * mini-x86.h: Same.
9167
9168         * simd-intrinsics.c: Add new vector type Vector2l.
9169
9170 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9171
9172         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9173
9174         * simd-methods.h: Remove SN_op_BitwiseXor.
9175
9176 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9179         alignment.
9180
9181 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9182
9183         * basic-simd.cs: Test for Vector2d.
9184
9185         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9186         value.
9187
9188 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9189
9190         * cpu-x86.md: Add double version of all packed float ops.
9191
9192         * mini-ops.h: Same.
9193
9194         * mini-x86.h: Same.
9195
9196         * simd-intrinsics.c: Add new vector type Vector2d.
9197
9198         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9199
9200         * simd-methods.h: Add Duplicate.
9201
9202 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9203
9204         * basic-simd.cs: Test for packing with signed saturation.
9205
9206 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9207
9208         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9209         found in the TYPESPEC table.
9210
9211 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9212
9213         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9214         too.
9215
9216         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9217
9218         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9219         instead of the RVA, since the RVA can be changed by tools like the cil 
9220         stripper.
9221
9222         * method-to-ir.c (mono_method_to_ir2): Ditto.
9223
9224         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9225         (deserialize_variable): Ditto.
9226
9227 2008-10-25  Martin Baulig  <martin@ximian.com>
9228
9229         * debug-mini.c (write_variable): Use
9230         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9231
9232 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9233
9234         * cpu-x86.md: Add unsigned variants of packd and packw.
9235
9236         * mini-ops.h: Same.
9237
9238         * mini-x86.h: Emit the right instruction for packd and packw.
9239         Add unsigned variants of packd and packw.
9240
9241         * simd-intrinsics.c: Packd and packw were used in place of their
9242         unsigned variants. Change that.
9243         Add intrinsics for (Signed)PackWithSignedSaturation.
9244
9245         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9246
9247 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9248
9249         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9250
9251 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9252
9253         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9254
9255         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9256
9257         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9258         sse instructions.
9259
9260         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9261
9262 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9263
9264         * method-to-ir.c, mini.c: Special casing for the synchronized
9265         wrapper for the ldtoken+GetTypeFromHandle case.
9266
9267 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9268
9269         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9270
9271         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9272         created/split bblocks.
9273
9274 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9275
9276         * mini-ops.h: Add packed signed mul high.
9277         
9278         * cpu-x86.md: Same.
9279
9280         * mini-x86.c (mono_arch_output_basic_block): Same.
9281
9282         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9283
9284         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9285
9286 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9287
9288         * basic-simd.cs: Tests for Vector16sb.
9289
9290 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9291
9292         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9293
9294 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9295
9296         * mini-ops.h: Add packed signed min, max and compare greater.
9297         
9298         * cpu-x86.md: Same.
9299
9300         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9301         saturation.
9302
9303         * simd-methods.h: Add CompareGreaterThan.
9304
9305         * simd-methods.h: Remove CompareEquals.
9306
9307         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9308
9309         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9310
9311         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9312         CompareEqual.
9313
9314 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9315
9316         * basic-simd.cs: Fix tests due to change in the API.
9317
9318 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9319
9320         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9321
9322 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9323
9324         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9325
9326         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9327         inst_offset as this has invalid values for LDADDR.
9328
9329 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9330
9331         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9332
9333         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9334
9335 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9336
9337         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9338         for accessing field->data.
9339
9340 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9341
9342         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9343
9344 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9345
9346         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9347
9348         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9349
9350 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9351
9352         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9353         from the cfg mempool.
9354
9355 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9356
9357         * basic-simd.cs: Tests for new methods in Vector8us.
9358
9359 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9360
9361         * mini-ops.h: Add multiply and store high.
9362         
9363         * cpu-x86.md: Same.
9364
9365         * mini-x86.c (mono_arch_output_basic_block): Same.
9366
9367         * simd-methods.h: Same.
9368
9369         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9370         and CompareEqual.
9371
9372 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9373
9374         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9375         mono_class_setup_vtable ().
9376
9377         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9378         mono_class_get_vtable_entry () for accessing klass->vtable.
9379
9380         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9381
9382         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9383         found.
9384
9385         * method-to-ir.c (mono_save_token_info): Don't save references made from
9386         wrappers.
9387
9388         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9389         of generic instances.
9390
9391         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9392
9393 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9394
9395         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9396         OP_JMP depends on the method signature.  Calculate it properly.
9397
9398 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9399         
9400         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9401         called directly.
9402
9403         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9404         instances.
9405         (emit_extra_methods): Add another table mapping method indexes to 
9406         offsets in the extra_method_info table.
9407
9408         * mini.h: Bump AOT file format version.
9409         
9410         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9411         and mono_aot_get_method_from_token () into one function.
9412
9413 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9414
9415         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9416         separate counter.
9417
9418 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9419
9420         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9421         methods.
9422
9423         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9424         disable_aot.
9425
9426         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9427
9428         * mini.h: Bump aot file format version.
9429
9430         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9431         AOT file can contain native code for methods which are not in the METHOD
9432         table. Generate code for non-sharable generic instances of generic methods
9433         found in the METHODSPEC table.
9434         
9435         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9436         encoding generic type handles.
9437
9438         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9439         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9440
9441         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9442         macros + MONO_ADD_INS.
9443
9444         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9445         context as well.
9446
9447         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9448
9449         * mini.h: Bump aot file format version.
9450
9451         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9452
9453 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9454
9455         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9456         platforms, with definable stack alignment value.  Set to 16 now
9457         for all platforms.
9458
9459         * mini.c, mini.h, driver.c: Command line option for disabling
9460         stack alignment.
9461
9462 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9463
9464         * basic-simd.cs: Tests for new methods in Vector4ui.
9465
9466 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9467
9468         * mini-ops.h: Add packed int shuffle.
9469         
9470         * cpu-x86.md: Same.
9471
9472         * mini-x86.c (mono_arch_output_basic_block): Same.
9473
9474         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9475         extract mask, max, min, shuffle.
9476
9477         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9478
9479 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9480
9481         * basic-simd.cs: Tests for new methods in Vector8us.
9482
9483 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9484
9485         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9486         RuntimeTypeHandle, not a TypedReference.
9487
9488 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9489
9490         * simd-intrinsics.c: remove relocations.
9491
9492 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9493
9494         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9495         optimizations from the x86 backend.
9496
9497 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9498
9499         * simd-methods.h, simd-intrinsics.c: debloat method names and
9500         prepare for no relocations.
9501
9502 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9503
9504         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9505         
9506         * cpu-x86.md: Same.
9507
9508         * mini-x86.c (mono_arch_output_basic_block): Same.
9509
9510         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9511         extract mask, max, min and sum of absolute differences.
9512
9513         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9514         method name.
9515
9516 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9517
9518         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9519         Renamed one test for consistency.
9520
9521 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9522
9523         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9524         fix to the code that deal with other blocks.
9525
9526 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9527
9528         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9529
9530 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9531
9532         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9533         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9534         able to process the source reg.
9535
9536 2008-10-16  Martin Baulig  <martin@ximian.com>
9537
9538         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9539
9540         * inssel.brg: Add `OP_HARD_NOP'.
9541
9542         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9543
9544         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9545         `OP_HARD_NOP' instruction when running inside the debugger.
9546
9547         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9548         `OP_HARD_NOP' instruction when running inside the debugger.
9549
9550 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9551
9552         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9553         now works. The issue with the regalloc tripping up no longer
9554         happens.
9555
9556         * simd-intrinsics.c (load_simd_vreg): Same.
9557
9558 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9559         
9560         * basic-simd.cs: Tests for new Vector8ui methods.
9561
9562 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9563
9564         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9565         only for type. This fixes crashes where MonoInst::klass is checked
9566         for ops of type != VTYPE or OBJ.
9567
9568         * simd-intrinsics.c (load_simd_vreg): Same.
9569
9570 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9571
9572         * mini-ops.h: Add ops for packed shuffle/max/avg and
9573         extract mask.
9574         
9575         * cpu-x86.md: Same.
9576
9577         * mini-x86.c (mono_arch_output_basic_block): Same.
9578
9579         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9580         extract mask.
9581
9582         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9583         to emit extract mask op.
9584
9585         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9586         to emit word shuffles.
9587
9588 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9589
9590         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9591         the largest alignment needed by a variable, but at least
9592         sizeof(gpointer).
9593
9594 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9595
9596         * basic-simd.cs: Tests for the fixes in the last commit.
9597
9598 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9599
9600         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9601         no longer handles STACK_PTR input.
9602
9603         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9604
9605         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9606         get_simd_vreg   but handles STACK_PTR input.
9607
9608         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9609         as the input can be an arbitrary pointer.
9610
9611         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9612         LDADDR local optimization directly otherwise use a store op.
9613
9614 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9615
9616         * basic-simd.cs: Tests for dup low and dup high.
9617
9618 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9619
9620         * mini-ops.h: Add dup low and dup high ops.
9621         
9622         * cpu-x86.md: Same.
9623
9624         * mini-x86.c (mono_arch_output_basic_block): Same.
9625
9626         * simd-intrinsics.c (vector4f_intrinsics): Same.
9627
9628 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9629
9630         * basic-simd.cs: Tests for recently added functionality.
9631
9632 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9633
9634         * mini-ops.h: Add remaining sse1 fp ops.
9635         
9636         * cpu-x86.md: Add remaining sse1 fp ops.
9637
9638         * mini-x86.c (mono_arch_output_basic_block): Same.
9639
9640         * mini.h: Add enum for simd FP compare conditions.
9641
9642         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9643
9644         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9645         so the backed can generate the appropriate op.
9646
9647 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9648         This patch squeese one more byte from the SimdIntrinsc struct.
9649
9650         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9651         a a shift amount intead of simply or'ing it.
9652
9653         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9654
9655         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9656         byte so we can have an aditional flags field without increasing struct size.
9657
9658         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9659         against the simd_supported_versions bitmask.
9660
9661         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9662
9663 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9664
9665         * mini.c: remove rawbuffer code (the only use here is unsafe because
9666         it takes locks during signal handling and the kernel now provides much
9667         better info in proc/pid/smaps these days).
9668
9669 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9670
9671         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9672         OP_X86_PUSH_OBJ. Fixes #434620.
9673
9674         * objects.cs: Add a test.
9675         
9676 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9677
9678         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9679         that the packuswb/packusdw don't work with unsigned numbers for what
9680         would be negative numbers in signed format.
9681
9682         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9683         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9684
9685         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9686
9687         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9688
9689         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9690
9691         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9692
9693         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9694         add more ops.
9695
9696         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9697         version as the enum in mini.h.
9698
9699         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9700         for sse3 ops, check the simd_version field if present. This way the code
9701         works with all versions of sse.
9702
9703 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9704
9705         * simd-intrinsics.c: Fixed intrinsic name typo.
9706
9707         * mini.h: Added missing simd exported function.
9708
9709         * basic-simd.cs: Added tests for Vector4ui.
9710         Fixed broken test for Vector16b.
9711
9712 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9713
9714         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9715         the max length to 64.
9716
9717 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9718
9719         * method-to-ir.c: Only do the fast virtual generic method call for
9720         non-wrapper methods.
9721
9722         * mini.h, mini-trampolines.c: The new generic virtual remoting
9723         trampoline handles virtual method calls via the vtable (as done by
9724         the fast virtual generic method calls) to remoting proxies.
9725
9726         * mini.c (mono_jit_create_remoting_trampoline): For generic
9727         methods reate a generic virtual remoting trampoline.
9728
9729         * mini-amd64.h: Enable fast virtual generic method calls again.
9730
9731 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9732
9733         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9734         restore registers when doing tail calls.
9735
9736 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9737
9738         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9739         Vector4ui.
9740
9741 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9742
9743         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9744
9745 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9746
9747         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9748
9749 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9750
9751         * basic-simd.cs: Retrofit for API changes.
9752
9753 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9754
9755         * mini-ppc.c: Handle integer stack arguments for tail calls.
9756
9757 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9758
9759         * optflags-def.h: Removed sse3 optimization.
9760
9761         * driver.c: Same.
9762
9763         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9764         sse3.
9765
9766         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9767
9768         * mini.h: Added enumeration with simd versions.
9769
9770         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9771         for detecting SSE3.
9772
9773         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9774
9775         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9776
9777 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9778
9779         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9780
9781         * basic-simd.cs: Fixed test naming.
9782
9783 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9784
9785         * mini-ops.h: Added ops for packed and saturated math, shifts
9786         and packing/unpacking.
9787
9788         * cpu-x86.md: Added descriptors for the above ops.
9789
9790         * mini-x86.c: Added code to emmit the above ops.
9791
9792         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9793
9794 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9795
9796         * aot-compiler.c (compile_method): Enable AOT for generic code.
9797
9798         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9799
9800 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9801
9802         * mini.c: add a workaround for a common screwup that ends up blamed
9803         to mono (other processes blocking signal delivery).
9804
9805 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9806
9807         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9808         in the LDFLD/STFLD opcodes. Fixes #432673.
9809
9810         * iltests.il.in: Add a new test.
9811
9812 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9813
9814         * mini-arm.c: attach the thread in unmanaged->managed transitions
9815         using delegates (bug #433148).
9816
9817 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9818
9819        * basic-simd.cs: Use new ShuffleSel constants.
9820
9821 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9822
9823         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9824
9825         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9826         only disable simd intrinsics if no sse2 is detected.
9827
9828         * optflags-def.h: Added sse3.
9829
9830         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9831         is disabled.
9832
9833 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9834
9835         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9836         when adding delegate-invoke wrappers.
9837
9838 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9839
9840         * Makefile.am: Reenable the simd tests.
9841
9842 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9843
9844         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9845           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9846           other vreg is allocated to that hreg.
9847
9848         Contributed under MIT/X11 license.
9849
9850 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9851
9852         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9853         yet checked in.
9854
9855 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9856
9857         * basic-simd.cs: New test suite for SIMD intrinsics.
9858
9859         * Makefile.am: Added new tests.
9860
9861 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9862
9863         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9864
9865         * mini-ops.h: Same.
9866
9867         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9868
9869         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9870         using SSE2 aware opcodes.
9871
9872         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9873         is enabled, this code path is only reachable if conversion ops are emmited after
9874         mono_method_to_ir.
9875
9876         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9877
9878         This optimization saves 6 bytes per conversion against the old version.
9879
9880 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9881
9882         * aot-compiler.c (compile_method): Don't skip methods referencing 
9883         generic methods without a corresponding entry in token_info_hash, since
9884         encode_method_ref () can handle all generic methods now.
9885
9886         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9887         generic context is set.
9888         
9889         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9890         generic sharing of LDTOKEN.
9891
9892 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9893
9894         * mini-amd64.h: Temporarily disabled fast virtual generic method
9895         calls because it breaks the System.Runtime.Remoting tests.
9896
9897 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9898
9899         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9900
9901         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9902         so inlining actually works.
9903         (check_inline_caller_method_name_limit): Ditto.
9904
9905 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9906
9907         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9908         64 bit safety (from Olaf Hering and Andreas Farber).
9909
9910 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9911         
9912         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9913         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9914         unused virtual call support code.
9915
9916         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9917         
9918         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9919         which can't use aot trampolines.
9920         (decode_patch): Don't create aot trampolines for methods which can't use
9921         them.
9922
9923         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9924         use aot trampolines.
9925
9926         * mini.h: Bump AOT image format version.
9927         
9928 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9929
9930         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9931         to save_token_info () since cmethod is inflated for constrained calls.
9932
9933         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9934
9935 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9936
9937         * Makefile.am: Add build rules for ppc64.
9938         This avoids the build failing at pedump with unresolved symbols
9939         due to lack of arch_sources. Instead it will now fail earlier
9940         due to lack of cpu-ppc64.md.
9941
9942         Contributed under MIT/X11 license.
9943
9944 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9945
9946         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9947         tail calls.
9948
9949         * iltests.il.in: Add test case for tail call with many arguments.
9950
9951 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9954         to the fast virtual generic method code until the aot case is fixed.
9955
9956 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9957
9958         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9959
9960 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9961
9962         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9963         thunks.
9964
9965 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9966         
9967         * simd-intrinsics.c: Forgot to add this one.
9968
9969         * mini-codegen.c: Fix macro in case SIMD is not supported.
9970
9971 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9972         
9973         This patch land initial JIT support for simd intrinsics.
9974
9975         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9976
9977         * Makefile.am: Added simd-intrinsics.c
9978
9979         * simd-intrinsics.c: New file with simd instrinsic related
9980         code.
9981
9982         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9983
9984         * cpu-x86.md: Add simd related instructions.
9985
9986         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9987
9988         * driver.c: Added two new --regression variants.
9989
9990         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9991
9992         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9993
9994         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9995         extract some complicated logic to helper functions.
9996
9997         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9998
9999         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10000
10001         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10002         the specialized simplification pass.
10003
10004         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10005
10006         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10007
10008         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10009         table.
10010
10011         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10012         if MONO_ARCH_NEED_SIMD_BANK is defined.
10013
10014         * mini-ops.h: Added the new simd ops.
10015
10016         * mini-x86.c: Added mono_arch_xregname.
10017
10018         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10019
10020         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10021
10022         * mini-x86.h: Define simd related MONO_ARCH macros.
10023
10024         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10025
10026         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10027
10028         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10029         MONO_CLASS_IS_SIMD to deal with simd related IR.
10030
10031         * mini.h (MonoInst): Added spill_var to the backend union.
10032
10033         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10034
10035         * mini.h: Added forward declarations of the new simd fuctions.
10036
10037         * optflags-def.h: Added new optimization names SIMD.
10038
10039         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10040
10041         * regalloc.h: Added support for working with 3 register banks.
10042
10043         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10044
10045         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10046
10047 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10048
10049         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10050
10051 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10052
10053         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10054         instead of one on 64 bit systems.
10055
10056         * method-to-ir.c: Remove unused includes.
10057
10058 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10059
10060         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10061         cfg->used_int_regs, since the two are different on arm.
10062
10063 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10064
10065         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10066         mono_method_get_vtable_index() to get the vtable index.
10067
10068 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10069
10070         * method-to-ir.c (mono_method_to_ir2): Don't create native
10071         wrappers for array methods, because they're never called (and if
10072         they were called they wouldn't work).
10073
10074 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10075
10076         * method-to-ir.c (mono_method_to_ir2): Array methods are
10077         special-cased and must not be invoked indirectly via the (M)RGCTX
10078         when generic sharing is turned on.  Fixes #431413.
10079
10080 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10081
10082         * method-to-ir.c: When generic sharing is active, call
10083         non-interface virtual generic methods via the standard trampoline.
10084
10085         * mini-trampolines.c: Handle virtual generic shared methods.
10086
10087         * mini.h, mini-x86.c, mini-x86.h: New argument for
10088         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10089         method thunks and which is the trampoline to call if the lookup
10090         fails.  Enable the virtual generic method thunk for x86.
10091
10092         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10093         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10094         argument but assert that it's NULL, because these archs don't yet
10095         implement the virtual generic method thunk.  Changes in the IMT
10096         thunk data structures.
10097
10098 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10099
10100         * aot-compiler.c (emit_globals): Avoid invalid characters in
10101         the static linking symbol.
10102
10103         * objects.cs: Add a test for the range check optimization. Fix warnings.
10104
10105         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10106         optimization from the current JIT.
10107
10108         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10109         later in decompose_array_access_opts () to allow more optimizations.
10110
10111         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10112         mono_decompose_soft_float () for consistency.
10113
10114         * mini-ops.h: Fix arguments of OP_STRLEN.
10115
10116         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10117         into a separate function.
10118         (reset_cast_details): Ditto.
10119         (handle_unbox): Save cast details. Fixes #431254.
10120
10121         * method-to-ir.c: Remove some obsolete FIXMEs.
10122
10123 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10124
10125         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10126
10127 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10128
10129         * mini-codegen.c: More work on macros to make them
10130         ready for multiple regbanks.
10131
10132 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10133
10134         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10135
10136         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10137
10138 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10139
10140         * mini-codegen.c (mono_spillvar_offset): Proper support for
10141         multiple regbanks.
10142
10143 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10144
10145         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10146         the stack overflow changes.
10147
10148 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10149
10150         * mini-codegen.c: Make all bank macros depend on reg_bank.
10151
10152         * mini-codegen.c (mono_local_regalloc): Make free mask
10153         initialization regbank aware.
10154
10155 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10156
10157         * mini-codegen.c (mono_local_regalloc): Extract callee
10158         mask selection to a function and make it regbank aware.
10159
10160 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10161
10162         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10163         code to deal with many regbanks.
10164
10165 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10166
10167         * mini-codegen.c: More fp->regbank changes.
10168
10169 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10170
10171         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10172         of a hardcoded constant.
10173
10174 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10175
10176         * method-to-ir.c (type_from_stack_type): Fix typo.
10177
10178 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10179
10180         * mini-ia64.c (emit_move_return_value): Convert float return values to
10181         double.
10182
10183         * objects.cs: Add a new test.
10184         
10185         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10186         VARARG methods to fix an assert later.
10187
10188         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10189         end so it at least compiles.
10190
10191 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10192
10193         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10194
10195 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10196
10197         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10198         optimization to a new function (emit_optimized_ldloca_ir) and enable
10199         it for both ldloca and ldloca_s.
10200
10201 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10204         gshared CASTCLASS code.
10205
10206         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10207         amd64, where the libc stack unwinder encounters stack frames referring to
10208         native code in unmapped memory.
10209
10210         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10211         sharing.
10212
10213         * generics.cs: Add new test.
10214
10215 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10216
10217         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10218         add a check that one of the ARM_FPU_ constants is defined.
10219
10220         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10221         
10222         * mini-exceptions.c: Fix build on non-altstack platforms.
10223
10224         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10225         sharing of vtypes.
10226
10227         * ir-emit.h: Add a comment to NEW_PCONST.
10228
10229         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10230
10231         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10232
10233         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10234         after the changes to MonoJitDomainInfo.
10235
10236 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10237
10238         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10239
10240 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10241
10242         * mini-ppc.c: Compiler warning fixes.
10243
10244 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10245
10246         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10247         for pinvokes.
10248
10249 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10250
10251         * exceptions-ppc.c, mini-ppc.h: Compile
10252         mono_arch_handle_altstack_exception() on Darwin, too.
10253
10254 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10255
10256         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10257         work on archs which don't have generic sharing implemented, only
10258         without the vtable_arg.
10259
10260 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10261
10262         * mini.c: Added comment explaining why delegate ctor icall
10263         wrappers are compiled.
10264
10265 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10266
10267         * mini.c: Don't produce trampolines to delegate ctor icall
10268         wrappers but compile them upfront.
10269
10270 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10271
10272         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10273         runtime-set function when going back to managed code. Currently this
10274         is used to set back the protection on the soft ovf pages and/or to
10275         throw the stack overflow exception that happened in unmanaged code.
10276
10277 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10278
10279         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10280         runtime-set function when going back to managed code. Currently this
10281         is used to set back the protection on the soft ovf pages and/or to
10282         throw the stack overflow exception that happened in unmanaged code.
10283
10284 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10285
10286         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10287         the support code for restoring stack protection after stack overflows
10288         that happen in unmanaged code. Don't set the exec permission on the
10289         soft overflow area.
10290
10291 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10292
10293         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10294         delegate->method_ptr is set. Fixes #428054.
10295
10296 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10297
10298         * tests.cs: Rename to ratests.cs.
10299
10300         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10301         emit_get_rgctx_... functions.
10302
10303 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10304
10305         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10306
10307 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10308
10309         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10310         before asserting that method is sharable.
10311
10312 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10313
10314         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10315         whether method needs a static RGCTX wrapper used instead of
10316         complex conditions.
10317
10318         * generic-sharing.c, mini.h: A few functions moved to
10319         metadata/generic-sharing.c.
10320
10321 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10322
10323         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10324         Generic code sharing for value types, which essentially means
10325         treating value type methods like static methods.  The RGCTX is
10326         passed in the same way.
10327
10328 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10329
10330         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10331         opcode when creating multi-dimensional arrays of open types.
10332
10333         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10334         open generic types.
10335
10336         * generics.cs: Add a test.
10337
10338         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10339
10340 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10343
10344         * mini.c (mini_method_compile): Set it when running under the debugger. 
10345
10346         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10347         vreg optimization if the flag is set.
10348
10349         * driver.c (mono_main): Add --attach= option to pass options to
10350         the attach agent.
10351
10352         * mini.c (sigquit_signal_handler): Start the attach agent.
10353
10354         * ssapre.c: Disable this to save space since it is not yet ported to
10355         linear IR.
10356
10357         * regalloc2.c: Disable this to save space.
10358
10359         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10360
10361 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10362
10363         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10364         the -v option useful again.
10365
10366 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10367
10368         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10369         --break-at-bb.
10370
10371         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10372         arrays of arrays. Fixes #428406.
10373
10374         * method-to-ir.c (mini_emit_castclass): Ditto.
10375
10376         * objects.cs: Add new test.
10377         
10378 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10379
10380         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10381         was wrong at it choked against target_type_is_incompatible for byref types.
10382
10383 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10384
10385         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10386         places.
10387
10388 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10389
10390         * mini-exceptions.c: update a few more exceptions-related counters.
10391
10392 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10393
10394         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10395         new functions to allocate from persistent mempools.
10396
10397 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10400         multiple register banks in the future.
10401
10402         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10403
10404 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10405
10406         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10407
10408         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10409
10410         * mini.h: Export type_to_eval_stack_type.
10411
10412         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10413         is only ins->klass of byref types.
10414
10415 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10416
10417         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10418         (mini_emit_memcpy2): Ditto.
10419
10420         * mini-amd64.c: Fix a warning.
10421
10422 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10423
10424         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10425         linking.
10426
10427 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10428
10429         * method-to-ir.c: Extract stloc micro-optimization to a
10430         function and apply it to all cases.
10431
10432 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10433
10434         * method-to-ir.c: Don't fail generic code sharing in cases we
10435         already support.
10436
10437 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10438
10439         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10440
10441 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10442
10443         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10444         implementation.
10445
10446 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10447
10448         * trace.c: make tracing more useful and correct, with per-thread
10449         id and indent info.
10450
10451 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10452
10453         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10454         doing a method call and the argument is an R4.
10455
10456 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10457
10458         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10459         generic methods.
10460
10461 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10462
10463         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10464
10465 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10466
10467         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10468         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10469
10470 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10471
10472         * driver.c: Add a --agent argument (not supported yet) to load managed
10473         agent assemblies before loading the main assembly, similarly to how the
10474         Java VM handles agents.
10475
10476 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10477
10478         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10479         function to do stack layout of local variables.
10480
10481 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10482
10483         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10484         calculation.
10485
10486 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10487
10488         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10489         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10490         JIT if DISABLE_JIT is defined.
10491
10492         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10493         defined.
10494
10495 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10496
10497         * iltests.il.in: Disable the fconv test on PPC (the result is
10498         undefined according to ECMA).
10499
10500 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10501
10502         * iltests.il.in: Enable tail call tests for PPC.
10503
10504         * mini.h: Add variable for storing incoming valuetype argument
10505         addresses for tail calls.
10506
10507         * mini-ppc.c: Implement valuetype arguments and return values for
10508         tailcalls on Linux.
10509
10510 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10511
10512         * mini-ppc.c: Partially implement tail calls (struct arguments and
10513         return values not supported).
10514
10515         * method-to-ir.c: Enable tail calls on PPC.
10516
10517 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10518
10519         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10520         runtime-invoke wrappers to work around the problem of them getting
10521         assigned to a random class.
10522
10523         * aot-runtime.c (mono_aot_get_method): Ditto.
10524         
10525 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10526
10527         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10528         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10529
10530 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10531
10532         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10533         until they're implemented properly.
10534
10535         * exceptions-ppc.c: Use arch-independent exception-handling code
10536         instead of custom one.
10537
10538         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10539         for Linear IR.
10540
10541         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10542
10543         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10544         applies when __powerpc__ is defined.
10545
10546 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10547
10548         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10549         methods to their code to avoid computing the full name of wrappers and
10550         doing a lookup in a string hash table.
10551
10552 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10553
10554         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10555         we identify bblocks before method_to_ir () is ran.
10556
10557         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10558         Also avoid optimizing branches pointing to themselves.
10559
10560         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10561
10562 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10563
10564         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10565
10566 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10567
10568         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10569         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10570         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10571         'buf'.
10572
10573         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10574         jumped to the same entry in plt_jump_table.
10575
10576 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10577
10578         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10579         dynamic images.
10580
10581 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10582
10583         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10584         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10585         #421807.
10586
10587 2008-08-29  Geoff Norton  <gnorton@novell.com>
10588
10589         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10590         segment, and doesn't properly handle .space as .text.  Fixes
10591         AOT Mach/ARM
10592
10593 2008-08-29  Geoff Norton  <gnorton@novell.com>
10594
10595         * mini.c: Disable the mach exception handler when running on 
10596         ARM
10597
10598 2008-08-29  Geoff Norton  <gnorton@novell.com>
10599
10600         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10601         globals on Darwin/ARM
10602
10603 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10604
10605         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10606         since too many things depend on it. Instead, call 
10607         mono_runtime_set_no_exec ().
10608         
10609         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10610         the new JIT.
10611
10612         * aot-compiler.c: Add an 'asm-only' AOT option.
10613
10614         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10615                 
10616         * aot-compiler.c (compile_method): Disable gshared support for now as it
10617         doesn't yet work.
10618
10619 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10620
10621         * mini-amd64.h : Fix a compiler warning.
10622
10623         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10624           Changed to use a callback function to retrieve the unwind info.
10625           This avoids problems observed when code blocks were removed by
10626           unloading an app domain.
10627
10628         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10629           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10630           to work properly.
10631
10632         Contributed under MIT/X11 license.
10633
10634 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10635
10636         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10637           case to keep the stack aligned to 8.
10638
10639         Contributed under MIT/X11 license.
10640
10641 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10642
10643         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10644         avoid repeated linear searches.
10645
10646 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10647
10648         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10649         methods it can't handle.
10650         
10651         * aot-compiler.c (add_method): Avoid adding a method twice.
10652         (add_wrappers): Add runtime invoke wrappers for all methods.
10653
10654         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10655         function to create an aot-compatible version of this trampoline.
10656
10657         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10658
10659 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10660
10661         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10662
10663         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10664         with a generic sharing failure.
10665
10666         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10667
10668         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10669         CEE_RETHROW. Fixes #419634.
10670
10671         * mini.c (mono_method_to_ir): Ditto.
10672
10673         * exceptions.cs: Add a new test.
10674         
10675         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10676         to mono_type_stack_size_internal () since some callers might not pass in
10677         an rgctx.
10678
10679         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10680         instrument_prolog. Fixes #419878.
10681
10682         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10683         doubles in soft float mode volatile.
10684
10685 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10686
10687         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10688
10689         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10690         to handle soft float correctly.
10691
10692         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10693         the fast path.
10694
10695         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10696
10697         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10698         to sp, since the generics catch code requires it.
10699
10700         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10701         copying.
10702
10703         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10704         mono_arch_emit_imt_argument ().
10705
10706         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10707
10708         * mini-arm.c tramp-arm.c: Generic sharing updates.
10709
10710 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10711
10712         * mini-arm.c: Fix the arm build.
10713
10714         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10715         handling enums, generic instances and generic sharing.
10716         (mini_type_stack_size_full): Ditto.
10717
10718         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10719         
10720         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10721
10722         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10723
10724         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10725         trampolines.
10726
10727         * mini-arm.c: Various small generic sharing changes.
10728
10729         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10730         this for x86.
10731         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10732         custom code.
10733
10734         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10735         helper function to return a generic class init trampoline.
10736
10737         * method-to-ir.c mini.c: Use it.
10738         
10739         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10740         arch-specfic function to return a generic class init trampoline.
10741
10742         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10743         the GENERIC_CLASS_INIT custom code.
10744
10745         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10746         a fatal error, not a sharing failure.
10747
10748         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10749         needed.
10750
10751         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10752         trampoline argument from MONO_ARCH_VTABLE_REG.
10753
10754         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10755         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10756         argument, and pass the vtable in VTABLE_REG.
10757
10758         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10759         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10760         argument, and pass the vtable in VTABLE_REG.
10761         (mono_arch_create_trampoline_code_full): Remove some special casing for
10762         the rgctx fetch trampoline.
10763
10764         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10765         Fixes #419273.
10766
10767         * iltests.il: Add a test for it.
10768
10769 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10770
10771         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10772
10773         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10774         no longer needed.
10775
10776         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10777         use mono_jit_info_table_find () to avoid recursion.
10778         (mono_delegate_trampoline): Add a sync wrapper here.
10779
10780         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10781         here.
10782
10783         * mini.c (mono_method_to_ir): Ditto.
10784         
10785         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10786         add_sync_wrapper argument. Don't add a sync wrapper here.
10787         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10788
10789         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10790         
10791 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10792
10793         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10794           of nonvolatile registers back from MonoContext to CONTEXT.
10795
10796         Contributed under MIT/X11 license.
10797
10798 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10799
10800         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10801           arguments on Winx64 there are only 4 argument registers.  For this
10802           logic to work the last argument must be pulled from the stack.  
10803
10804         Contributed under MIT/X11 license.
10805
10806 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10807
10808         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10809
10810         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10811         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10812         encode/decode_method_ref ().
10813
10814         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10815
10816         * aot-runtime.c (decode_patch): Ditto.  
10817
10818         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10819         MONO_PATCH_INFO_METHOD.
10820
10821         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10822         MonoGenericJitInfo.
10823
10824         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10825         MonoGenericJitInfo.
10826
10827         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10828
10829         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10830         one from the caller.
10831
10832         * aot-runtime.c (decode_generic_inst): New function to decode and
10833         return a interned generic inst.
10834         (decode_klass_ref): Use it.
10835         (decode_method_ref): Ditto.
10836
10837         * aot-compiler.c (emit_exception_debug_info): Save 
10838         jinfo->has_generic_jit_info too.
10839
10840 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10841
10842         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10843
10844         * iltests.il.in: Add a test for fconv_to_i.
10845
10846         * liveness.c: Disable the liveness2 pass for now to save space.
10847
10848         * regalloc2.c: Include mempool-internals.h to fix warnings.
10849
10850         * aot-compiler.c (encode_method_ref): Encode the context of generic
10851         instance methods.
10852
10853         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10854         the context saved in the aot file.
10855
10856         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10857
10858         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10859
10860         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10861         volatile so they won't be optimized away.
10862
10863 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10864
10865         * ssa.c:
10866         * ssa2.c:
10867         * mini.c:
10868         * regalloc2.c:
10869         * dominators.c: Remove duplicated functions that now are in
10870         mempool-internals.h.
10871
10872 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10873
10874         * aot-compiler.c: Fix warnings.
10875
10876         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10877
10878         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10879
10880         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10881         as the patch type.
10882
10883         * mini.c (mono_resolve_patch_target): Ditto.
10884         
10885         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10886         (encode_klass_ref): Add support for encoding VARs/MVARs.
10887
10888         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10889
10890         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10891         the handling of the got entries into a separate 'decode_got_entry' function.
10892         Add support for RGCTX_FETCH.
10893
10894         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10895         clobbered by the trampoline code.
10896
10897         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10898         not clobbered by the indirect calling code.
10899
10900 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10901
10902         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10903         to fix the build.
10904
10905 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10906
10907         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10908         signature using the compilation mempool otherwise we would leak it.
10909
10910 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10911
10912         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10913         mono_emit_abs_call ().
10914
10915         * patch-info.h: Add GENERIC_CLASS_INIT.
10916
10917         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10918
10919         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10920         as their target as a near call.
10921
10922         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10923         ABS handling code.
10924         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10925
10926         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10927         call to a runtime function described by a patch.
10928
10929         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10930         mono_emit_abs_call, this has the advantage that the ABS handling code in
10931         mono_codegen () can handle them both, and can handle other stuff in the
10932         future without additional code.
10933
10934         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10935         entry.
10936         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10937         abs addresses.
10938
10939         * mini.h: Add missing bblock related prototypes.
10940
10941         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10942         reverse_inst_list_len fields.
10943
10944         * mini.c: Refactor this file a bit by moving branch optimizations to 
10945         branch-opts.c.
10946
10947         * method-to-ir.c: Merge generic sharing changes missed earlier.
10948
10949         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10950
10951         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10952         shared patches. Process METHODCONST as a shared patch.
10953
10954         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10955         as it crashes on the 2.0 mscorlib.
10956
10957         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10958         to cause crashes.
10959         
10960         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10961         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10962         by IMT.
10963
10964         * aot-compiler.c: Reorganize the got handling code to be a bit more
10965         understandable.
10966
10967 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10968
10969         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10970         mono_patch_info_equals/hash, and use it to massively simplify
10971         get_plt_index ().
10972
10973         * mini.c (mono_patch_info_hash): Simplify this and add support for
10974         more patch types.
10975
10976         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10977
10978         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10979         handling code, since an offset is not enough to identify a trampoline.
10980
10981         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10982
10983 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10984
10985         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10986
10987         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10988
10989         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10990
10991         * decompose.c: PPC decompositions for various ops.
10992
10993         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10994
10995 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10996
10997         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10998         call the generic trampoline code using a call, instead of a jump, to
10999         remove some special casing from the generic trampoline code.
11000
11001         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11002         (mono_codegen): Ditto.
11003
11004         * aot-compiler.c aot-runtime.c: Ditto.
11005
11006         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11007
11008         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11009         helper function to find the offset corresponding to a lazy fetch trampoline.
11010
11011         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11012         when doing generic sharing.
11013
11014         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11015         places.
11016         
11017         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11018         mini-trampolines.c to be with the other trampoline creation functions.
11019
11020         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11021         as it is equal to method->signature in most cases, add a 
11022         mono_emit_method_call_full variant which takes a signature and an imt
11023         argument as well.
11024
11025 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11026
11027         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11028         to this function, since it could be computed easily from the method 
11029         argument.
11030         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11031         more.
11032
11033         * method-to-ir.c mini.c: Remove references to 
11034         compile_generic_method_wo_context.
11035
11036         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11037         generic method calls.
11038         
11039         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11040         dimensional non-szarrays.
11041
11042         * mini.c (mini_init): Register mono_array_new_1.
11043
11044         * jit-icalls.c (mono_array_new_1): New jit icall.
11045
11046         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11047         pointing to the method.
11048
11049         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11050         method addresses belonging to METHOD_JUMP patches in the 
11051         jump_target_got_slot_hash.
11052         (mono_aot_load_method): Ditto.
11053
11054         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11055         METHOD_JUMP patches.
11056
11057         * mini.c (mini_create_jit_domain_info): New helper function which 
11058         initializes/frees domain->runtime_info.
11059         (mini_free_jit_domain_info): Ditto.
11060         (mini_init): Install the domain hook functions with the runtime.
11061
11062         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11063         information maintained by the JIT.
11064
11065         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11066         insertion into jump_table_hash into mono_codegen (), also implement proper
11067         locking.
11068
11069         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11070         tail calls, it is already done by the aot code.
11071         
11072         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11073         mechanism on amd64.
11074
11075         * iltests.il.in: Make the jmp test a bit more complex.
11076
11077         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11078         generic instances which doesn't have a token.
11079
11080         * aot-runtime.c (decode_method_ref): Ditto.
11081         
11082         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11083         can handle this case now.
11084         (handle_box): Ditto.
11085
11086 2008-08-15  Geoff Norton  <gnorton@novell.com>
11087
11088         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11089         debugging check.
11090
11091 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11092
11093         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11094         calling generic methods.
11095
11096         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11097
11098         * aot-runtime.c (decode_patch_info): Ditto.
11099
11100         * mini.c (mono_resolve_patch_target): Ditto.
11101         
11102         * patch-info.h: Add METHOD_RGCTX.
11103
11104         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11105
11106 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11107
11108         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11109         arguments in registers.
11110
11111         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11112         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11113
11114         * mini.c (mini_method_compile): Abort aot compilation for generic
11115         methods if generic sharing is disabled.
11116         
11117         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11118         an mrgctx.
11119
11120         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11121         requiring an mrgctx.
11122
11123         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11124         store instructions when converting a vcall to a normal call.
11125
11126         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11127         mono_arch_find_jit_info.
11128
11129 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11132         avoid calling mono_method_full_name () for every method even if the
11133         env var is not set.
11134         (check_inline_caller_method_name_limit): Ditto.
11135
11136 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11137
11138         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11139         assemblies in one run.
11140
11141         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11142         skipped methods if it is not 0.
11143
11144         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11145
11146 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11147
11148         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11149           MONO_ARCH_HAVE_UNWIND_TABLE.
11150
11151         Contributed under MIT/X11 license.
11152
11153 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11154
11155         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11156           from default optimizaton list on Winx64.
11157
11158         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11159
11160         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11161           the LMF from the MonoJitTlsData structure.
11162
11163         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11164
11165         Contributed under MIT/X11 license.
11166
11167 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11168
11169         * mini.c (sigsegv_signal_handler): Fix the build.
11170
11171         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11172         assembly->aot_module.
11173
11174         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11175         hash table. This simplifies and speeds up a lot of code, and fixes support
11176         for .netmodules.
11177
11178         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11179         with the runtime.
11180
11181         * mini-exceptions.c: Ditto.
11182         
11183         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11184         'native_offset' argument, since these are computed in the 
11185         mono_find_jit_info () function.
11186
11187         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11188         is used by exceptions-ppc.c.
11189
11190         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11191         mono_arch_find_jit_info ().
11192         
11193         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11194         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11195         generic code in mini-exceptions.c.
11196
11197 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11198
11199         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11200
11201         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11202         
11203         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11204         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11205         called while holding the loader lock. Fixes #415608.
11206         (mono_aot_get_method_from_token_inner): Ditto.
11207
11208 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11209
11210         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11211         to reduce differences between this and the generic implementation in
11212         mini-exceptions.c.
11213         (ves_icall_get_frame_info): Ditto.
11214
11215         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11216
11217         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11218         longer neccesarry.
11219
11220         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11221         mono_arch_get_call_filter () and make it non-static, for consistency with the
11222         other architectures.
11223
11224 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11225
11226         * mini.c:
11227         * local-propagation.c:
11228         * mini-x86.c: Correct the name of arch defines.
11229
11230 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11231
11232         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11233         NO_EMULATE_LONG_SHIFT_OPS define.
11234
11235 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11236
11237         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11238         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11239
11240         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11241         MACH fixes. Merged from the 2.0 branch.
11242
11243         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11244
11245         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11246         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11247
11248         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11249
11250         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11251         mono_marshal_get_native_wrapper () signature changes.
11252
11253 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11254
11255         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11256         conversion bug under arm.
11257
11258 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11259
11260         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11261
11262         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11263         with overflow checking.
11264
11265 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11266
11267         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11268         to the genmdesc.pl file
11269
11270 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11271
11272         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11273         arg_array in the soft-float versions of the LOAD/STORE macros.
11274
11275         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11276         implementation.
11277
11278         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11279
11280 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11281
11282         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11283         a float HFA. Fixes #413621.
11284
11285 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11286
11287         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11288         frame_size to args_size. Fixes build.
11289
11290 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11291
11292         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11293         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11294
11295         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11296         the stack are not unaligned. Fixes #413247.
11297         
11298 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11299
11300         * mini.c: update jitted methods performance counters.
11301
11302 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11303
11304         * mini-exceptions.c: increase the exceptions thrown performance
11305         counter in mono_handle_exception ().
11306
11307 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11308
11309         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11310         can work with netmodules.
11311
11312 2008-07-28  Geoff Norton  <gnorton@novell.com>
11313
11314         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11315         regression tests.
11316
11317 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11318
11319         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11320         correct place.
11321
11322 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11323
11324         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11325           The float param registers and other param registers must be the 
11326           same index on Windows x64.
11327
11328         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11329           ArgValuetypeAddrInIReg argument case.  Setting the argument
11330           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11331
11332         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11333           variable computed above as the copy length for arguments of storage
11334           type ArgValuetypeAddrInIReg.
11335
11336         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11337           ArgValuetypeAddrInIReg argument case.  This case will rely on
11338           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11339
11340         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11341           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11342           jump and tail call instructoins as they do not follow the typical call behavior.
11343
11344         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11345           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11346           local variable and pass the local variable by reference to the called method.
11347
11348         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11349           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11350           of a struct is passed in a register it must be saved with the other
11351           volatile argument on the stack.
11352
11353         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11354           frame pointer the stack adjustment value must be saved to the unwind 
11355           info structure.
11356
11357         Contributed under MIT/X11 license.
11358
11359 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11360
11361         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11362         which got lost in the merge.
11363
11364 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11365
11366         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11367         build.
11368
11369         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11370         
11371         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11372         icalls, since they won't be patched.
11373
11374         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11375         different code sequence when running under valgrind to prevent some valgrind
11376         errors.
11377
11378         * iltests.il.in: Add new regression test.
11379
11380         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11381         end with a throw.
11382
11383         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11384         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11385
11386         * iltests.il.in: Add new test.
11387
11388         * aot-compiler.c: Fix some warnings.
11389
11390         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11391         Fixes #412494.
11392
11393 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11394
11395         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11396         (mini_usage_jitdeveloper): Add a missing --wapi option.
11397
11398 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11399
11400         * mini-codegen.c: Simplify the is_fp macros.
11401         (free_up_ireg): Remove, use free_up_reg instead.
11402         (free_up_reg): Fix the fp case.
11403
11404 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11405
11406         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11407         lowered earlier.
11408
11409         * exceptions-x86.c: Merge some changes which seemed to have got lost
11410         in the linear-ir merge.
11411
11412         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11413
11414         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11415         long vreg volatile even if the variable was already created.
11416
11417         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11418         volatile variables.
11419
11420 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11423
11424         * mini.c (mono_jit_compile_method_inner): Add support for 
11425         MONO_EXCEPTION_BAD_IMAGE.
11426
11427         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11428         mini_method_get_context () returns NULL. Fixes #356531.
11429
11430         * mini.c (mono_method_to_ir): Ditto.
11431         
11432         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11433         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11434
11435 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11436
11437         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11438         in the LDFTN implementation.
11439
11440 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11441
11442         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11443         code, patch calls to icalls, too, even if they're not in the
11444         shared generic code hash.  Fixes #411962.
11445
11446 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11447
11448         * cpu-x86.md: Increase the length of the fcall opcodes.
11449
11450         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11451         calls returning floats.
11452
11453         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11454         on NEWARR.
11455         
11456         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11457         missed earlier.
11458
11459         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11460         into the domain->method_code_hash.
11461
11462         * aot-compiler.c: Fix win32 build.
11463
11464         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11465         
11466         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11467         gshared NEWARR implementation.
11468
11469         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11470
11471         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11472         can be used outside of method_to_ir.
11473
11474         * mini.h (MonoCompile): Add arg_types field.
11475
11476         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11477         
11478         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11479         the values of the local arg_array and param_types array.
11480
11481 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11482
11483         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11484         got accesses might only get generated later when NEWOBJ is decomposed.
11485         
11486         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11487         looking up the native code of the target method when a delegate is called
11488         for the first time.
11489
11490         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11491         optimization.
11492
11493         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11494
11495         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11496         AOT work on platforms without a working dlsym implementation.
11497
11498         * mini.h: Bump AOT image format version.
11499         
11500 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11501
11502         * mini-exceptions.c: Free a MonoType with
11503         mono_metadata_free_type() instead of g_free().
11504
11505         * aot-runtime.c: Free a MonoType.
11506
11507 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11508
11509         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11510         optimization.
11511
11512         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11513         fp stack on x86.
11514
11515 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11516         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11517         profiler hook.
11518
11519 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11520
11521         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11522         NEWOBJ calls on valuetypes.
11523
11524         * iltests.il.in: Add new test.
11525
11526         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11527
11528 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11529
11530         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11531         is no longer needed.
11532
11533         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11534         non register sized integer arguments.
11535         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11536         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11537         emit_memcpy2 ().
11538
11539         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11540         CEE_MONO_RETOBJ.
11541         
11542         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11543         two a binop with different sized arguments is emitted.
11544
11545         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11546         instruction in the ins==NULL case.
11547
11548 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11549
11550         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11551
11552         * mini-x86.c: Fix osx build.
11553
11554         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11555         opcodes as well.
11556
11557         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11558         instruction for non int sized variables.
11559
11560         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11561         implementation.
11562
11563 2008-07-23  Robert Jordan  <robertj@gmx.net>
11564
11565         * method-to-ir.c: Fix MSVC build.
11566
11567 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11568
11569         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11570         a non int sized type, widen it to an int since newer versions of gcc seem to
11571         generate code which needs this.
11572
11573         * ssa2.c abcremoval2.c: Fix warnings.
11574
11575         * *: Merge the Linear IR branch.
11576
11577         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11578         the ChangeLog file there describes all the changes done over the years. 
11579         Further documentation can be found at www.mono-project.com/Linear_IL.
11580
11581 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11582
11583         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11584           The float param registers and other param registers must be the 
11585           same index on Windows x64.
11586
11587         Contributed under MIT/X11 license.
11588
11589 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11590
11591         * mini.c: Make the previous fix GC safe.
11592
11593 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11594
11595         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11596
11597 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11598
11599         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11600           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11601           ArgValuetypeAddrInIReg instead.
11602
11603         Contributed under MIT/X11 license.
11604
11605 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11606
11607         * mini-codegen.c (get_register_spilling): Fix a warning.
11608
11609 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11610
11611         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11612         for types which the initialization fails. Raises the provided exception
11613         at the right stop after cleanup.
11614
11615 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11616
11617         * aot-compiler.c: Free most of the memory allocated during compilation.
11618
11619         * mini.c (mini_parse_debug_options): Fix a leak.
11620         
11621         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11622         during aot compilation.
11623
11624 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11625
11626         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11627         it has too much register pressure.
11628
11629 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11630
11631         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11632
11633 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11634
11635         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11636         on x86.
11637
11638         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11639         on amd64 similar to the way it is done on arm.
11640
11641         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11642
11643         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11644         consistency, normalize error messages, avoid loading aot-only modules in
11645         normal mode.
11646
11647         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11648         for consistency.
11649
11650         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11651
11652 2008-07-11  Martin Baulig  <martin@ximian.com>
11653
11654         * debug-debugger.h
11655         (MonoDebuggerInfo): Add `interruption_request'.
11656
11657 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11658
11659         * aot-compiler.c (emit_plt): Remove some dead code.
11660
11661         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11662
11663         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11664         return the plt info offset belonging to a given plt entry.
11665
11666         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11667         mono_aot_get_plt_info_offset.
11668         
11669         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11670         similar to the amd64 code by makeing jumps through a separate jump table 
11671         instead of embedding the jump addresses into the code.
11672
11673 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11674
11675         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11676         method.
11677
11678 2008-07-10  Martin Baulig  <martin@ximian.com>
11679
11680         * mini.c (mini_method_compile): Disable generics sharing when
11681         running in the debugger.
11682
11683 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11684
11685         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11686
11687         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11688         the local register allocator from running out of registers on x86 when 
11689         using aot.
11690
11691 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11692
11693         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11694         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11695         C4146.
11696
11697         Contributed under MIT/X11 license.
11698
11699 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11700
11701         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11702         speed up the assembler.
11703
11704 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11705
11706         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11707         support.
11708
11709         * mini.c: Move the soft float handling macros a bit earlier, add 
11710         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11711         place.
11712
11713         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11714
11715         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11716         read-only to help catch code allocation requests.
11717         
11718         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11719         and turn it off when using --aot-only or when compiling with --aot=full.
11720
11721         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11722         jump table for switches from the normal domain mempool, not the code
11723         manager.
11724
11725         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11726         unbox trampoline which handles aot-only mode too.
11727
11728         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11729         an AOTed unbox trampoline.
11730
11731         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11732
11733 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11734
11735         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11736         ""
11737
11738         Contributed under MIT/X11 license.
11739
11740 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11741
11742         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11743           the unwind information for the method at the end of the allocated block.
11744           
11745         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11746           MonoCompileArch to hold the unwind info for SEH on Winx64
11747         
11748         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11749           frame pointer info for the method being compiled.
11750           
11751         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11752           the call to mono_exception_from_token.
11753           
11754         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11755           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11756           information is stored a the end of the method block because it is all 32-bit offset based.
11757
11758         Contributed under MIT/X11 license.
11759
11760 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11763
11764         * wapihandles.c: Fix warnings.
11765
11766         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11767         mode.
11768
11769         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11770         mono_jit_compile_method in aot-only mode since that calls the type 
11771         initializer.
11772         
11773         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11774         get_delegate_invoke_impl in aot-only mode.
11775
11776         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11777
11778 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11779
11780         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11781
11782         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11783         is on by default.
11784
11785         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11786
11787         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11788         init trampoline from the AOT file as well.
11789
11790         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11791         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11792         code.
11793
11794         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11795         mono_init.
11796
11797         * exceptions-amd64.c: Add _full variants for the remaining exception code
11798         creation functions as well, allow emission of relocatable code, remove
11799         caching since that is now done by the caller.
11800
11801         * mini-exceptions.c: Add _full variants for the remaining exception code
11802         creation functions as well, add aot-only support.
11803
11804         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11805         if we can determine a proper token for them.
11806         (add_wrappers): Add a few more wrappers.
11807         (emit_method_code): Remove some dead code.
11808         (emit_trampolines): Emit exception code too.
11809
11810         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11811
11812         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11813         mono_array_new_va which avoids varargs.
11814
11815         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11816
11817         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11818         mono_arch_create_specific_trampoline () in all places.
11819
11820         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11821         a bit so it can be used for other things as well.
11822         
11823         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11824         on demand as well.
11825
11826         * exceptions-amd64.c: Rename the caching from the exception code creation
11827         functions, it is done by the caller instead.
11828         
11829         * exceptions-amd64.c: Change the signature of the exception code creation 
11830         functions to allow the creation of relocatable code later.
11831
11832         * mini-exceptions.c: Add a set of functions to query the various 
11833         runtime-generated exception functions.
11834
11835         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11836         mono_arch_.. () functions.
11837         
11838 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11839
11840         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11841
11842         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11843
11844         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11845         (mini_get_vtable_trampoline): Ditto.
11846
11847         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11848         code in the AOT case by returning the code size and a list of relocations to
11849         the caller.
11850
11851         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11852
11853 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11854
11855         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11856           clean the stack.
11857
11858         Contributed under MIT/X11 license.
11859
11860 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11861
11862         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11863         so the buffer size can be computed correctly. Fixes #404735.
11864
11865         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11866         normally as cfg->debug_info is already freed.
11867
11868 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11869
11870         * mini-amd64.c: For calls returning vtypes in registers, don't store
11871         the return address on the stack, instead allocate a separate local for
11872         it. Fixes #404729.
11873
11874 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11875
11876         * mini-trampolines.c, mini.h: Add an argument to
11877         mono_create_jit_trampoline_in_domain() for turning off the adding
11878         of the sync wrapper.
11879
11880         * mini.c: Use the JIT trampoline without sync instead of
11881         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11882         be patched.
11883
11884 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11885
11886         * driver.c: Turn on GSHARED optimization by default.
11887
11888 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11889
11890         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11891         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11892
11893         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11894         create a variant of the generic trampoline code callable from AOTed trampolines.
11895
11896         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11897         trampoline code callable from AOTed trampolines.
11898
11899         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11900
11901 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11902
11903         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11904         pass-through manner.
11905
11906         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11907         and don't fail sharing for them anymore.
11908
11909         * mini-exceptions.c: Handle exceptions in shared generic methods.
11910
11911         * generic-sharing.c: When checking the context of a generic
11912         method, also check its class's context.  Don't treat wrappers as
11913         sharable.
11914
11915         * mini-trampolines.c: Some code factored out to
11916         metadata/generic-sharing.c.  Handle the MRGCTX case.
11917
11918         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11919         we must deal with the method being of another instantiation of the
11920         class.  Add static rgctx invoke wrappers to generic methods.
11921
11922 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11923
11924         * mini.c: Provide all jit infos of generic shared methods with a
11925         generic jit info.
11926
11927         * mini-exceptions.c: Handle the new situation that a generic info
11928         might be available, but not info about the this/vtable/mrgctx
11929         variable.
11930
11931 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11932
11933         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11934         generic methods.
11935
11936 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11937
11938         * dominators.c (check_dominance_frontier): Fix a warning.
11939
11940         * mini.h: Add some missing prototypes.
11941
11942         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11943
11944         * driver.c (mono_jit_init_version): Correct the comments since the first
11945         argument should be the name of the root domain, not a filename.
11946
11947         * aot-runtime.c (make_writable): Error out if this is called while running
11948         with --aot-only.
11949         (load_aot_module): Ditto.
11950
11951         * aot-compiler.c: Really fix the computation of method indexes.
11952
11953         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11954         optimizations as this is no longer called frequently.
11955
11956         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11957         method and the invoke impl code and pass it to the delegate trampoline instead of
11958         just the delegate class.
11959
11960 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11961
11962         * aot-compiler.c: Fixup the computation of method indexes.
11963         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11964         the method builder infrastructure.
11965
11966         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11967         has no header.
11968
11969         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11970         mode, load the method right away instead of creating a trampoline.
11971
11972         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11973
11974         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11975         some checks a bit.
11976
11977 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11980         (mono_aot_load_method): Use method_index instead of method->token.
11981
11982         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11983         can handle icalls etc. properly.
11984
11985         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11986
11987         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11988
11989         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11990         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11991         JIT_ICALL_ADDR patch type.
11992
11993         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11994
11995         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11996         request flag.
11997         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11998
11999         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12000
12001 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12002
12003         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12004         domain->jit_code_hash.
12005
12006 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12009
12010 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12011
12012         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12013         get_this_arg_from_call, let it compute it when needed.
12014
12015         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12016         gsctx from code only when needed.
12017
12018         * mini-trampolines.c (get_generic_context): Rename this to 
12019         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12020         it can be called by the arch backends.
12021
12022         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12023
12024 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12025
12026         * driver.c (mono_main): Add experimental --aot-only command line option.
12027
12028         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12029         set.
12030
12031 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12032
12033         * driver.c (DllMain): Remove mono_module_handle.
12034
12035         Contributed under MIT/X11 license.
12036
12037 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12040         for emitting methods which are not in the source assembly. Detect and report
12041         failure of assembling+linking.
12042         
12043         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12044
12045         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12046
12047 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12048
12049         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12050
12051 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12052
12053         * mini.h: Remove some obsolete prototypes.
12054
12055         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12056
12057 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12058
12059         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12060         supported by Visual Studio, so use alloca().
12061
12062 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12063
12064         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12065         Fixes #402585.
12066
12067 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12068
12069         * mini.c: Fail sharing of a generic method if it contains an open
12070         catch clause (because we don't pass MRGCTXs yet).
12071
12072 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12073
12074         * mini.c: When compiling a method with generic sharing, insert the
12075         method instantiated with an all-Object generic context into the
12076         jit info table, instead of the context of the first instantiation
12077         of the method we happen to compile.
12078
12079 2008-06-18  Martin Baulig  <martin@ximian.com>
12080
12081         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12082         `major_version' and `minor_version'.
12083
12084 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12085
12086         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12087         mono_method_is_generic_sharable_impl() takes an additional
12088         argument specifying whether to treat type variables as reference
12089         types.
12090
12091 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12092
12093         * mini.h: Removed obsolete prototypes.
12094
12095 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12096
12097         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12098         already handle them.
12099
12100 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12101
12102         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12103         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12104         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12105         tramp-x86.c: Added a MonoGenericContext* argument to
12106         mono_arch_get_unbox_trampoline() so that it can call other
12107         functions which require it.
12108
12109 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12110
12111         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12112         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12113         mono_arch_get_this_arg_from_call() takes a
12114         MonoGenericSharingContext* as well.
12115
12116 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12117
12118         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12119         implement generic sharing of unbox.
12120
12121 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12122
12123         * mini.c: Don't compute the vtable to determine whether a field is
12124         special static, because it might not work for open types.
12125
12126 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12127
12128         * mini.c: Removed the unused token_type and token_source arguments
12129         from get_runtime_generic_context_ptr().
12130
12131 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12132
12133         * mini.c (ADD_BINOP): fix the build
12134
12135 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12136
12137         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12138         a widening op.
12139
12140 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12141
12142         * mini.h: Removed class relations enum that's not used anymore.
12143
12144 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12145
12146         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12147
12148         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12149         the lazy fetch trampoline access code.
12150
12151 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12154
12155 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12156
12157         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12158
12159         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12160
12161         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12162
12163 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12164
12165         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12166         intrinsics.
12167
12168         * mini-ops.h: Add MIN/MAX_UN opcodes.
12169
12170         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12171         intrinsics.
12172
12173         * basic-math.cs: Add more min/max tests.
12174
12175         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12176
12177 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12178
12179         * mini.c: Small fix in the prologue of emit_castclass.
12180
12181 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12184
12185         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12186         do not work even for unsigned types. Fixes #400014.
12187
12188         * basic-math.cs: Add regression tests for unsigned Min/Max.
12189
12190 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12191
12192         * mini.c: Added additional context_used argument to several
12193         functions, which will be needed for sharing generic methods.  Use
12194         GET_RGCTX macro wherever appropriate.  Declare only one
12195         context_used in mono_method_to_ir().
12196
12197 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12198
12199         * mini.c, generic-sharing.c: Removed generic class relations.
12200
12201         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12202         functions due to MRGCTX changes.
12203
12204 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12205
12206         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12207         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12208         with calculated IMT.
12209
12210         * mini.c: Generic sharing of calls via generic interfaces.
12211
12212         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12213         generic method with non-constant MonoGenericContext*.  Instead,
12214         the context is taken out of the method itself.
12215
12216 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12217
12218         * mini.c: Generic sharing of ldvirtftn.
12219
12220 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12221
12222         * mini.c: Generic sharing of ldftn.
12223
12224 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12225
12226         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12227
12228 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12229
12230         * mini.c: Generic sharing of the special case of ldtoken followed
12231         by a call to GetTypeFromHandle.
12232
12233 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12234
12235         * mini.c: Generic sharing of box for nullable types.
12236
12237 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12238
12239         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12240         are passed on the stack. Fixes #324807.
12241
12242 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12243
12244         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12245         for the ArgValuetypeAddrInIReg case.
12246
12247         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12248         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12249
12250         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12251         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12252         local variable and pass the local variable by reference to the called method.
12253           
12254         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12255         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12256
12257         Contributed under MIT/X11 license.
12258
12259 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12260
12261         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12262
12263         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12264         everything.
12265
12266 2008-06-10  Martin Baulig  <martin@ximian.com>
12267
12268         * debug-mini.c
12269         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12270
12271 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12272
12273         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12274         possible error when no arguments are passed.
12275
12276         Contributed under MIT/X11 license.
12277
12278 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12279
12280         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12281         where the file name is NULL.
12282
12283 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * mini.c: Fix s390 build.
12286
12287 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12288
12289         * trace.c (mono_trace_parse_options): Fix warnings.
12290
12291         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12292
12293 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12294
12295         * mini.c (remove_block_if_useless): Avoid printing the method name.
12296         
12297         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12298         MONO_INST_NEW.
12299
12300         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12301         LMF. Not yet used.
12302
12303         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12304         translated code after it has been patched.
12305
12306 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12307
12308         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12309         avoid problems during code patching on SMP systems.
12310         (emit_call): Avoid adding a patch info which is already added by 
12311         emit_call_body.
12312         (mono_arch_emit_exceptions): Ditto.
12313
12314 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12315
12316         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12317         MONO_TYPE_ISSTRUCT already checks for it.
12318
12319 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12320
12321         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12322           structs with floats on Winx64 the float registers are not used.  
12323           The integer registers are always used..
12324         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12325           only one register will be used and only if the size of the struct 
12326           is 1,2,4, or 8 bytes.
12327
12328         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12329           to work for Winx64.
12330
12331         Contributed under MIT/X11 license.
12332
12333 2008-06-05  Martin Baulig  <martin@ximian.com>
12334
12335         * debug-debugger.c (debugger_lookup_class): Also call
12336         mono_class_setup_methods() here; we're only called from RTI.
12337
12338 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12339
12340         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12341         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12342         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12343         Post-process object files and add dtrace-generated object, if necessary.
12344
12345         Contributed under MIT/X11 license.
12346
12347 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12348
12349         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12350         element class.
12351
12352         * mini.c: Generic sharing for unbox.any and castclass.
12353
12354 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12355
12356         * mini.c: Ignore tailcall prefix in shared generic code and when
12357         doing calls which require a vtable/rgctx argument.
12358
12359 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12360
12361         * mini.c: Don't free the JIT info.
12362
12363         * driver.c: Changes in the JIT info table testing code.
12364
12365 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12366
12367         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12368         interruption. Fix some warnings.
12369
12370         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12371         interruption_checkpoint.
12372
12373 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12374
12375         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12376         from embedding applications.
12377
12378 2008-06-02  William Holmes  <billholmes54@gmail.com>
12379
12380         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12381           reserving 32 bytes on the stack when making calls. 
12382
12383         Contributed under MIT/X11 license.
12384
12385 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12386
12387         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12388         the linear IL branch.
12389
12390         * driver.c: Print out more information for --version on arm.
12391
12392 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12393
12394         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12395         bb_exit instead, since out of line bblocks might not actually be emitted
12396         out-of-line.
12397         
12398         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12399         maximum epilog size for out of line bblocks if tracing is enabled.
12400
12401         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12402
12403 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12404
12405         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12406
12407 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12408
12409         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12410         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12411         opcodes.
12412
12413 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12416         the 'value' to store is a constant.
12417
12418         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12419
12420         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12421         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12422
12423 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12426         for accessing method->generic_container.
12427
12428 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12429
12430         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12431         
12432         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12433
12434         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12435
12436         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12437         fails.
12438
12439 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12442
12443         * mini.c: Handle the case when mono_class_vtable () fails.
12444
12445 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12446         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12447         the stat profiler.
12448
12449 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12450
12451         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12452         together with domain sharing.
12453
12454 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12455
12456         * mini.c: Treat callvirts to final methods like non-virtual calls
12457         when doing generic sharing, i.e. look them up in the runtime
12458         generic context.
12459
12460 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12461
12462         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12463         with computed types (for generic sharing).
12464
12465         * mini.c: Generic sharing for mkrefany and refanyval.
12466
12467 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12468
12469         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12470         possible.
12471
12472         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12473         the generic sharing code.
12474         
12475         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12476         when needed.
12477
12478 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12481
12482 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12483
12484         * driver.c: updated copyright date
12485
12486 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12487
12488         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12489         needed.
12490
12491 2008-05-19  Martin Baulig  <martin@ximian.com>
12492
12493         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12494         pointing to the new `_mono_debug_using_mono_debugger' variable.
12495
12496         * driver.c
12497         (mono_main): Check mono_debug_using_mono_debugger() rather than
12498         the `MONO_INSIDE_MDB' environment variable to check whether we're
12499         inside the debugger.
12500
12501 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12502
12503         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12504         argument.
12505
12506 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12507
12508         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12509
12510         * mini.c: Added mini_assembly_can_skip_verification. This
12511         function checks if the assembly requested to skip verification. 
12512         Fixes part of #387274.
12513
12514 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12515
12516         * mini.c (mini_get_method): Disable the check for open generic classes when
12517         using generic sharing.
12518
12519         * generics.cs: Add a test for #387034.
12520
12521         * mini.c (mini_get_method): Check whenever the method class is an open generic
12522         type, and return NULL in that case, causing a verification error. Fixes
12523         #384123.
12524
12525 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12526
12527         * driver.c (mono_main): Revert r102623. The right
12528         thing to do is to enable the verifier under verifiable
12529         unless a --security flag was passed.
12530
12531         We need this non-trivial behavior for --verify-all otherwise
12532         mcs-compileall won't be able to use it. As it needs everything to
12533         be verified under validil.
12534
12535 2008-05-06  Martin Baulig  <martin@ximian.com>
12536
12537         Fix #383749.
12538
12539         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12540         (mono_debugger_thread_cleanup): Likewise.
12541         (mono_debugger_extended_notification): Likewise.
12542
12543 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12544
12545         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12546         against both inflated and non-inflated methods. We need to check against the
12547         generic definition for cases where the instantiated method is not visible.
12548         We need to check against the inflated types for cases where the instantiation
12549         changes any super type. This fixes #382986.
12550
12551         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12552         that check for visibiliy as generic params only appears as the type subject
12553         of tokens on call opcodes. Field manipulation and ldftn must always
12554         target an exact type.
12555
12556 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12557
12558         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12559         if no related --security flag is passed.
12560
12561 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12562
12563         * mini-arch.h: Prepare support for ppc64.
12564
12565         Contributed under MIT/X11 license.
12566
12567 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12568
12569         * aot-runtime.c: Prepare support for ppc64.
12570
12571         Contributed under MIT/X11 license.
12572
12573 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12574
12575         * mini-ops.h: Prepare support for ppc64.
12576
12577         Contributed under MIT/X11 license.
12578
12579 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12580
12581         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12582
12583         Contributed under MIT/X11 license.
12584
12585 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12586
12587         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12588         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12589         assemblies on windows.
12590
12591 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12592
12593         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12594         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12595         * main.c: Use UTF-8 encoded command line instead of Windows default code
12596         page on Windows to support Unicode.
12597         * driver.c (DllMain): New function for mixed-mode assembly support.
12598         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12599         export __stdcall functions without decoration.
12600
12601         Contributed under MIT/X11 license.
12602
12603 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12604
12605         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12606         saving it very early.
12607
12608 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12609
12610         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12611         deleted.  The only way to access the new RGCTX is via the
12612         trampline.
12613
12614         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12615         vtable instead of the RGCTX to static methods.
12616
12617         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12618         accessing the new RGCTX.
12619
12620         * generic-sharing.c: There is no separation between self, type
12621         arguments and other types in the RGCTX anymore.
12622
12623 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12624
12625         * mini-amd64.c (add_general): Remove previous stack adjustment.
12626         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12627         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12628         for 32 bytes of stack space reserved for all calls.
12629         
12630         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12631         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12632         adjustment.
12633         
12634         Code contributed under MIT/X11 license.
12635
12636 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12637
12638         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12639         against the root definition, peeling out method and type instantiations.
12640         Cache verify success results, code that fails verification is still
12641         checked multiple times.
12642
12643 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12644
12645         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12646
12647 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12648
12649         * mini-amd64.c (add_general): Always increment stack on Win64.
12650         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12651         on Win64.
12652         
12653         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12654         stack based argument handling on Win64.
12655         
12656         Code contributed under MIT/X11 license.
12657
12658 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12659
12660         * Makefile.am (version.h): Add support for git-svn.
12661
12662 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12663
12664         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12665         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12666         avoiding allocations and libc functions which might deadlock.
12667         
12668         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12669         'no-gdb-backtrace' option is set.
12670
12671         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12672
12673         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12674
12675 2008-04-21  Martin Baulig  <martin@ximian.com>
12676
12677         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12678         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12679
12680 2008-04-21  Martin Baulig  <martin@ximian.com>
12681
12682         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12683         `thread_vtable', `event_handler_ptr' and `event_handler'.
12684
12685 2008-04-21  Martin Baulig  <martin@ximian.com>
12686
12687         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12688         allows delayed initialization of the `executable_code_buffer' when
12689         attaching.
12690
12691 2008-04-21  Martin Baulig  <martin@ximian.com>
12692
12693         * mini.h (mono_debugger_create_notification_function): Removed.
12694         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12695
12696         * mdb-debug-info64.s
12697         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12698
12699         * mdb-debug-info32.s
12700         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12701
12702         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12703         currently only works on x86 and x86_64, so don't create it on ppc.
12704
12705 2008-04-21  Martin Baulig  <martin@ximian.com>
12706
12707         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12708
12709         * mini.c
12710         (mini_method_compile): In the fp elimination check, check
12711         `debug_options.mdb_optimizations' in addition to
12712         mono_debug_using_mono_debugger().       
12713
12714         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12715         disable some JIT optimizations which are only disabled when
12716         running inside the debugger.
12717         Added `--help-debug' option to describe the debugging options.
12718         (parse_debug_options): New static function to parse the `--debug'
12719         options, so we can easily add more stuff in future.
12720
12721 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12722
12723         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12724         the method has no body.
12725
12726 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12727
12728         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12729         assembly is not allowed in MSVC 64-bit compiler. 
12730         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12731         as we get floating point exceptions everywhere.
12732         
12733         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12734         correctly align arguments for call to throw_exception.
12735         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12736         
12737         Code contributed under MIT/X11 license.
12738
12739 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12740
12741         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12742
12743 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12744
12745         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12746
12747         * mini-amd64.c (NEW_INS): Set cil_code.
12748
12749         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12750         from mini-amd64.c so all debugger related logic is in one place.
12751
12752         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12753         later won't have a random ip assigned to them.
12754
12755 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12758         the arch specific function initializes code_size.
12759         (mono_create_delegate_trampoline): Ditto.
12760
12761         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12762         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12763         platforms.
12764
12765         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12766         running under the debugger.
12767
12768         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12769         debugger.
12770
12771         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12772         debugger. Also move the disabling of optimizations here from driver.c.
12773         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12774         debugger.
12775
12776         * mini.h (MonoCompile): Add a few new flags.
12777
12778 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12779
12780         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12781         so the cil_code field of created MonoInst's is properly set.
12782         (mini_select_instructions): Ditto.
12783
12784         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12785         (MONO_INST_NEW_CALL): Ditto.
12786
12787         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12788         in many places so the ins->cil_code field is properly initialized.
12789
12790         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12791         place.
12792
12793 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * mini.c (mini_method_compile): Print a different message when compiling a 
12796         shared method.
12797         
12798         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12799         > 1.
12800
12801 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12804         SSE2 instructions.
12805
12806         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12807         
12808 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12809
12810         * mini.c (handle_stack_args): Make this return void since its return value was
12811         never used. Also set cfg->unverifiable for invalid IL instead of calling
12812         G_BREAKPOINT ().
12813
12814 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12815
12816         * mini.c: Make sure "this" is live in catch clauses with type
12817         variables in shared generic code.
12818
12819 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12820
12821         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12822         generic_class_is_reference_type() to ensure the proper behaviour
12823         when sharing generic code and the type in question is a type
12824         argument.
12825
12826 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12827
12828         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12829         race conditions when printing thread dumps. Fixes #377738.
12830
12831 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12832         
12833         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12834         shows up when both MonoInst arguments can cause aliasig.
12835         There is likely no way in the current JIT to trigger this problem, but
12836         it showed up in the development of generics sharing, when in a new
12837         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12838         When the generics sharing code will be committed, its tests will be
12839         valid also for this bug.
12840
12841 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12844         PATCH_INFO_METHOD.
12845
12846         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12847         NULL.
12848
12849 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12850
12851         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12852         use a more detailed exception message for InvalidCastException.
12853
12854         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12855
12856         * driver.c (mono_main): Add --debug=casts option to turn on better 
12857         InvalidCastException message details.
12858
12859         * mini.c (mini_get_debug_options): New helper function to return the address of
12860         the debug_options variable.
12861
12862         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12863         the jit_tls TLS variable.
12864
12865         * mini.c (mono_jit_tls): New TLS variable.
12866
12867         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12868         option is used.
12869
12870 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12871
12872         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12873
12874         * mini.c: Removed verifer related stuff, code moved to verify.c.
12875
12876         * driver.c: Using code from verify.c instead of mini.c.
12877
12878 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12879
12880         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12881         longer valid.
12882
12883 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12884
12885         * mini.c (check_for_method_verify): Enabling verification of
12886         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12887         have been fixed.
12888
12889 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12890
12891         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12892         caller saved registers as well.
12893         
12894         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12895         saved registers as well.
12896
12897 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12898
12899         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12900
12901         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12902         code.
12903
12904 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12905
12906         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12907         to get_call_info.
12908         (get_call_info): Take a gsctx argument instead of 'cfg'.
12909
12910 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12911
12912         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12913         mono_verify_all is set.
12914
12915         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12916
12917         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12918
12919 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12920
12921         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12922         an exception.
12923
12924         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12925         verifier and the code generated by the compiler.
12926
12927 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12928
12929         * mini.c: Generic sharing of the non-nullable case of the box
12930         instruction.
12931
12932 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12933
12934         * inssel.brg: Fix the build.
12935
12936         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12937
12938 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12939
12940         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12941         Array:Address. Fixes #372410.
12942
12943         * iltests.il.in: New tests for readonly prefix.
12944
12945 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12946
12947         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12948         mini-trampolines.c.
12949
12950         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12951         mini-exceptions.c.
12952
12953         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12954         
12955         * mini.c (mono_decompose_op_imm): New helper function.
12956
12957         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12958         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12959         return value.
12960
12961         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12962         mono_arch_output_basic_block. Fix warnings.
12963
12964         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12965         for now.
12966
12967 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12968
12969         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12970         since the extra frame is now detected automatically inside the loop.
12971
12972         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12973         opts which are now in mono_peephole_ins ().
12974         
12975         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12976
12977         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12978         frames and skip duplicate managed-to-native frames. Fixes #367665.
12979
12980         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12981         opts which are now in mono_peephole_ins ().
12982         (mono_arch_peephole_pass_2): Ditto.
12983
12984         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12985
12986         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12987         arch independent peephole optimizations.
12988
12989         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12990         opts which are now in mono_peephole_ins ().
12991
12992         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12993         
12994         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12995
12996         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12997         pattern.
12998
12999         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13000         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13001         opcode. 
13002
13003 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13004
13005         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13006         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13007         return value.
13008
13009         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13010         mono_arch_output_basic_block. Fix warnings.
13011
13012 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13013
13014         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13015         conv.ovf.u.un.
13016
13017 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13018
13019         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13020         conv.ovf.u.un.
13021
13022         * iltests.il: Add new tests.
13023
13024 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13025
13026         * mini.c: Removed Windows version macros.
13027
13028 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13029
13030         * generic-sharing.c: Put reflection types in the extensible part
13031         of the runtime generic context.
13032
13033         * mini.c: Generic sharing of the GetTypeHandle special case of the
13034         ldtoken instruction.
13035
13036 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13037
13038         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13039
13040         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13041         
13042         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13043         consistency with the other version on the linear IR branch.
13044
13045         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13046
13047         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13048
13049         * iltests.il.in: Add new tests.
13050
13051 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13052
13053         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13054
13055         * iltests.il.in: Add new tests.
13056
13057 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13058
13059         * mini.c: Two variables with the same name were declared in
13060         nesting contexts and one wasn't initialized.  Fixed.
13061
13062 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13063
13064         * mini.c: Generic sharing of the initobj instruction.
13065
13066 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13067
13068         * mini.c: make the test to optimize ldtoken from typeof() more
13069         precise.
13070
13071 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13072
13073         * mini.c: Generic sharing of the initobj instruction for reference
13074         types.
13075
13076 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13077
13078         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13079         the mono_breakpoint_clean_code() code to perform bound checks.
13080
13081 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13082
13083         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13084         mono_arch_patch_callsite() to include the start of the managed method
13085         to be able to perform bound checks.
13086
13087 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13088
13089         * mini.c: Generic sharing for the isinst instruction.
13090
13091 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13092
13093         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13094         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13095         with the runtime generic context argument.
13096
13097         * mini.c: Share calls to several types of unsharable methods by
13098         putting the address of the method code in the runtime generic
13099         context and doing an indirect call.
13100
13101         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13102         to switches.
13103
13104 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13105
13106         * generic-sharing.c: Change due to a change in the runtime genric
13107         context API.
13108
13109 2008-03-15  Martin Baulig  <martin@ximian.com>
13110
13111         * tramp-x86.c
13112         (mono_arch_nullify_class_init_trampoline): Add call to
13113         mono_breakpoint_clean_code() to make things work when running
13114         inside the debugger.
13115
13116         * tramp-amd64.c
13117         (mono_arch_nullify_class_init_trampoline): Add call to
13118         mono_breakpoint_clean_code() to make things work when running
13119         inside the debugger.
13120
13121 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13122
13123         * inssel-long.brg (reg): Fix 64 bit build.
13124
13125 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13126
13127         * mini.c, mini.h: Share static generic code by passing it an
13128         implicit argument pointing to the runtime generic context.
13129
13130         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13131         inssel-long32-mips.brg: New opcodes for calling shared static,
13132         which need to be passed the runtime generic context.
13133
13134         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13135         argument on the stack in the prologue if needed.  New function for
13136         finding the runtime generic context argument from the registers
13137         saved by the trampoline.
13138
13139         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13140         runtime generic context argument.
13141
13142         * tramp-amd64.c: Also restore the register used for the runtime
13143         generic context argument.
13144
13145         * mini-trampoline.c: Resolve shared static calls by consulting the
13146         runtime generic context via the new argument.
13147
13148         * generic-sharing.c: Add an argument to sharability-checking
13149         functions that specifies whether type variables should be treated
13150         as sharable type arguments.
13151
13152         * inssel-x86.brg: Removed a superfluous, buggy rule.
13153
13154         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13155         to switches.
13156
13157 2008-03-14  Martin Baulig  <martin@ximian.com>
13158
13159         * debug-debugger.c (main_thread_handler): Call
13160         mono_runtime_run_main() without sending any notifications.
13161
13162         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13163
13164 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13165
13166         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13167
13168 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13169
13170         * tramp-x86.c: Fixed register restore offsets in the trampoline
13171         code for ECX and EDX.
13172
13173 2008-03-12  Geoff Norton  <gnorton@novell.com>
13174
13175         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13176         different ucontext_t implementations.
13177         * exceptions-arm.c: Use the above defines to get exceptions working on 
13178         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13179         * mini-arm.c: Implement iPhone icache support (based on a patch by
13180         Luke Howard lukeh@padl.com)
13181
13182 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13183
13184         * mini.c: Enable generic sharing of calls to non-static
13185         non-interface non-generic non-value-type methods.
13186
13187         * mini-trampolines.c: Resolve calls from shared generic code.
13188
13189 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13192
13193         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13194
13195 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13196
13197         * mini.c: some fixes for the AOT compiler.
13198
13199 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13200
13201         * cpu-amd64.md: Add clob:1 to some float opcodes.
13202
13203 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13204
13205         * mini.h: Added MiniVerifierMode enumeration.
13206
13207         * mini.c: Added mini_verifier_set_mode to control
13208         the usage of the new verifier.
13209
13210         * mini.c (mono_method): Integrated the new verifier.
13211
13212         * driver.c: Extended --security option with validil and
13213         verifiable options to activate the new verifier.
13214
13215 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13216
13217         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13218         optimization to ctors taking 0 or 2 arguments too.
13219
13220         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13221         a bit.
13222
13223         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13224
13225         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13226
13227 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13228
13229         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13230         non-aot case as well.
13231
13232         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13233
13234         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13235         changes.
13236
13237         * aot-compiler.c (encode_patch): Ditto.
13238
13239         * mini.h (G_MININT32): Fix the definition of this.
13240
13241 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13242
13243         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13244
13245         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13246
13247 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13248
13249         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13250         methods returning vtypes in registers.
13251         (mono_arch_allocate_vars): Ditto.
13252
13253         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13254
13255         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13256
13257         * generics.cs: Add a test from the linear IR branch.
13258
13259         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13260
13261         * mini.c (inline_method): Cache failed inline attempts.
13262
13263 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13264
13265         * mini.c: For shared methods of generic classes put the location
13266         of "this" into the MonoGenericJitInfo.
13267
13268         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13269         register out of a MonoContext by register number.  Add the generic
13270         sharing context as an argument to mono_arch_find_this_argument().
13271
13272         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13273         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13274         for new arch function.
13275
13276         * mini-exception.c: Handle open exception clauses in shared
13277         generic code.
13278
13279         * mini-trampolines.c: Supply additional argument to
13280         mono_arch_find_this_argument().
13281
13282 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13283
13284         * Makefile.am (regtests): Run the bench.exe tests last.
13285
13286 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13287
13288         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13289         a bit.
13290
13291 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13292
13293         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13294         with MS.
13295
13296         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13297         
13298         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13299
13300         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13301         whose class has no cctor.
13302
13303         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13304
13305 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13306
13307         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13308         unverified.
13309
13310 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13311
13312         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13313         to be in sync with the code on the linear IR branch.
13314
13315         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13316
13317         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13318
13319 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13322
13323         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13324
13325         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13326
13327         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13328
13329         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13330         
13331         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13332         body.
13333
13334 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13335
13336         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13337         OP_LOADR4_MEMBASE emission.
13338
13339         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13340         (mono_spillvar_offset_float): Ditto.
13341
13342         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13343
13344         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13345         emission.
13346
13347         * basic-long.cs: Add regression tests for them.
13348
13349         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13350         use.
13351         (mono_arch_allocate_vars): Fix representation of single-precision float
13352         argument.
13353         (mono_arch_output_basic_block): Ditto.
13354
13355         * inssel-mips.brg: Ditto, remove duplicate items.
13356
13357         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13358         arguments of tail calls as on other platforms.
13359         (mono_arch_output_basic_block): Handle tail calls.
13360
13361         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13362         register.
13363
13364         * objects.cs (test_5_pass_static_struct): Add test for it.
13365
13366         Contributed under MIT/X11 license.
13367
13368 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13369
13370         * Makefile.am: Use gmcs for compiling the regression tests.
13371
13372         * *.2.cs *.2.il: Rename to *.cs and *.il.
13373
13374 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13375
13376         * regalloc.h: Make the vassign array smaller.
13377
13378         * mini.c (mini_method_compile): Remove an unused field in cfg.
13379
13380         * mini-codegen.c: Add a bunch of micro optimizations.
13381
13382 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * regalloc.h: Remove some unused fields.
13385
13386 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13387
13388         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13389
13390         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13391
13392 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13393
13394         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13395
13396         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13397         trampoline: Fetch an entry from the runtime generic context.  If
13398         it's NULL, jump to the actual trampoline to fill the runtime
13399         generic context.  Otherwise, return it.
13400
13401         * mini.c: Call the lazy fetch trampoline to get entries out of the
13402         runtime generic context.
13403
13404         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13405         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13406         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13407
13408 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13409
13410         * mini.c: Fetch data out of the extensible part of the runtime
13411         generic context instead of calling a helper function.
13412
13413         * generic-sharing.c: Some functions moved into
13414         metadata/generic-sharing.c.  Helper function for fetching other
13415         types now checks and asserts against extensible rgctx (just for
13416         debugging purposes - the helper function isn't called anymore
13417         unless for debugging).
13418
13419 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13420
13421         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13422         for tail calls up to the point that the tests in iltests.exe run. Also add a
13423         dummy CKFINITE implementation.
13424         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13425         needed for trampoline LMF frames.
13426
13427         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13428         trampoline LMF frames.
13429
13430 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13431
13432         * mini.c (inline_method): clean any pending loader error when inlining fail.
13433         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13434
13435 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13436
13437         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13438
13439         * aot-runtime.c (decode_patch_info): Ditto.
13440
13441         * mini.c (mono_resolve_patch_target): Ditto.
13442         
13443         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13444         icall wrappers.
13445
13446         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13447         
13448         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13449         if it references an icall address.
13450
13451 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13452
13453         * cpu-s390x.md: Remove some more unused opcodes.
13454         
13455         * cpu-s390x.md: Remove some unused opcodes.
13456
13457         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13458         mono_op_imm_to_op ().
13459
13460         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13461         instead of a switch statement.
13462         
13463         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13464         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13465
13466         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13467         
13468         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13469
13470         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13471         -1.
13472
13473 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13476         opened. Fixes #362607.
13477
13478         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13479
13480         * iltests.il.in: Add a test for static methods in interfaces.
13481
13482 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13483
13484         * genmdesc.c (build_table): Fix a crash on older glib versions.
13485
13486         * cpu-sparc.md: Remove some unused opcodes.
13487         
13488         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13489         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13490
13491         * cpu-amd64.md: Remove some unused opcodes.
13492
13493         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13494         like the other opcodes.
13495
13496 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13497
13498         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13499
13500         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13501
13502         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13503         variables 'cfg' instead of 'm' for consistency.
13504
13505         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13506
13507         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13508         argument holding the vtype return address, to avoid the ambigious use of
13509         cfg->ret for this purpose.
13510
13511         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13512
13513         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13514         
13515         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13516         new mono_print_ins () function which only takes one argument.
13517
13518 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13519
13520         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13521         macro arguments.
13522
13523 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13524
13525         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13526
13527         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13528
13529         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13530         opcodes and other small changes.
13531
13532         * mini-ops.h: Add some new opcodes from the linear IR branch.
13533
13534         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13535
13536         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13537         opcodes, use the REG_MEMBASE opcodes instead.
13538         
13539         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13540         opcodes, use the REG_MEMBASE opcodes instead.
13541         
13542         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13543         linear IR branch.
13544
13545         * mini.c (mono_op_imm_to_op): New helper function.
13546
13547         * mini-ops.h: Add some opcodes from linear IR branch.
13548
13549 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13550
13551         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13552         <tsv@solvo.ru>.
13553
13554 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13555
13556         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13557         OP_ICONV_TO_R4/R8.
13558
13559         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13560
13561 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13562
13563         * aot-compiler.c (emit_method_code): Add an assert.
13564
13565         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13566         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13567         methods.
13568
13569 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13570
13571         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13572         some load/store opcodes so they are consistent. 
13573         (mono_arch_emit_prolog): Simplify some code.
13574
13575         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13576
13577         * objects.cs: Add tests for large argument offsets on ARM.
13578
13579         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13580         stack offsets. Fixes #359651.
13581
13582         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13583
13584         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13585
13586         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13587
13588         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13589
13590         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13591
13592         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13593         rid of CEE_CONV_R_UN.
13594
13595         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13596
13597 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13598
13599         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13600
13601         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13602
13603         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13604
13605         * cpu-amd64.md: Remove some unused opcodes.
13606
13607         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13608
13609         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13610
13611         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13612         arch specific functions for its parts. Call the peephole pass after local
13613         regalloc so the prolog can compute a more accurate max_offset.
13614         
13615         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13616         the corresponding OP_I/OP_L opcodes.
13617
13618         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13619
13620         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13621
13622 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13623
13624         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13625         as they are handled in mini.c.
13626
13627         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13628         
13629         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13630         case since it is handled in mini.c.
13631
13632         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13633
13634         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13635
13636         * *.c: Use the new opcodes in the IR and back end code.
13637
13638         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13639
13640         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13641
13642 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13643
13644         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13645         an assert because it has a race condition.
13646
13647 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13648
13649         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13650
13651         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13652
13653         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13654
13655         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13656         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13657
13658 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13659
13660         * cpu-amd64.md (move): Correct the maximum size of move.
13661
13662 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13663
13664         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13665         the generic class init trampoline to return quickly if the class
13666         is already inited.
13667
13668 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13669
13670         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13671         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13672
13673 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13674
13675         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13676         branch.
13677
13678 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13679
13680         * objects.cs: Add some soft-float tests.
13681
13682         * mini.c: Fix a couple more soft-float issues.
13683
13684         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13685
13686         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13687         avoid a REX prefix.
13688
13689 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13690
13691         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13692         exception happens while compiling a virtual method.
13693
13694 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13695
13696         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13697         
13698         * mini-sparc.c: Fix build.
13699
13700         * mini-sparc.c (get_call_info): Add support for generic sharing.
13701
13702         * mini-exceptions.c: Add a FIXME.
13703
13704 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13705
13706         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13707         altstack handling code.
13708
13709         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13710         
13711         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13712
13713         * mini-s390.c: Add support for generic sharing.
13714
13715         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13716         Fix CAS on s390.
13717         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13718
13719         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13720
13721         * mini-s390x.c: Add support for generic sharing.
13722         
13723         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13724         Fix CAS on ia64.
13725         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13726
13727         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13728         can be used since it takes a 16 bit signed immediate.
13729
13730         * inssel-s390x.brg: Fix OP_SETRET.
13731
13732         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13733
13734         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13735
13736         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13737
13738         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13739
13740         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13741         in one place.
13742
13743         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13744         stuff.
13745
13746         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13747         of the unused mono_arch_patch_delegate_trampoline stuff.
13748
13749 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13750
13751         * basic-long.cs: Move the fp related tests to basic-float.cs.
13752
13753         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13754
13755         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13756
13757         * basic-calls.cs: Add a test for proper float argument passing.
13758
13759         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13760         if the context corresponds to an exception received through a signal.
13761
13762         * exceptions.cs: Add a test for nullref handling at the start of a try
13763         clause.
13764
13765         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13766
13767         * jit-icalls.c (mono_break): New JIT icall.
13768
13769         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13770
13771         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13772
13773 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13774
13775         * cpu-*.md: Get rid of unused opcodes.
13776
13777         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13778
13779         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13780         by all platforms.
13781
13782         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13783         define.
13784
13785         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13786         the arch independent trampoline code in mini-trampolines.c.
13787
13788         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13789
13790         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13791
13792         * mini-s390.h: Remove an unused define.
13793         
13794         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13795         the arch independent trampoline code in mini-trampolines.c.
13796
13797         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13798
13799 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13800
13801         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13802
13803         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13804
13805         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13806
13807         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13808
13809         * cpu-amd64.md: Use smaller sizes for int opcodes.
13810
13811         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13812
13813         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13814         objects.cs.
13815
13816         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13817         debugging.
13818
13819         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13820         instead of though a pointer to save an indirection when accessing elements of
13821         the array.
13822
13823         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13824         some typos.
13825         (NOT_IMPLEMENTED): New helper macro.
13826         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13827         of a bb.
13828
13829         * *.c: Use the new helper macro.
13830
13831 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13834
13835 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13838         stack slots.
13839
13840 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13841
13842         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13843         profiling is enabled.
13844         
13845         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13846         the end.
13847         (mono_arch_emit_prolog): Add more first bblock optimizations.
13848
13849         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13850         in order if possible.
13851         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13852         bblock, since the arguments are still in their original registers.
13853
13854         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13855
13856 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13857
13858         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13859         as well.
13860
13861         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13862         offset 0.
13863
13864         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13865
13866         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13867         process async exceptions received while in unmanaged code.
13868
13869         * mini.c (mini_init): Install a callback with the runtime which will be called
13870         when a thread receives an async exception while in unmanaged code.
13871
13872         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13873
13874         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13875
13876 2008-01-16  Wade Berrier  <wberrier@novell.com>
13877
13878         * cpu-g4.md:
13879         * cpu-arm.md:
13880         * cpu-s390x.md:
13881         fix build
13882
13883 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13884
13885         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13886         compilation with sun cc.
13887
13888         * cpu-*.md: Fix the build.
13889
13890         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13891
13892         * mini-amd64.h: Add some comments to the MonoLMF structure.
13893
13894         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13895         
13896         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13897         in the LMF structure if possible. This saves two instructions in the
13898         managed->native wrappers.
13899
13900         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13901
13902 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13903
13904         * generic-sharing.c: New type argument lookup code which uses the
13905         runtime generic context template.
13906
13907 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13908
13909         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13910
13911         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13912         (mono_arch_output_basic_block): Fix localloc implementation.
13913
13914         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13915
13916         * mini-ia64.c (peephole_pass): Fix ia64 build.
13917
13918         * mini-amd64.c (peephole_pass): Fix a warning.
13919         
13920         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13921         at a constant offset from sp/fp.
13922
13923         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13924         instead of obtaining it from *lmf in the managed method case.
13925
13926 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13927
13928         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13929
13930 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13931
13932         * mini.h (MonoInstList): New type.
13933         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13934         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13935         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13936         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13937         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13938         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13939         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13940         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13941         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13942         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13943         MONO_INST_LIST_FOR_EACH_ENTRY,
13944         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13945         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13946         mono_inst_list_first, mono_inst_list_last,
13947         mono_inst_list_next, mono_inst_list_prev): New instruction
13948         list handling interfaces.
13949         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13950         list head 'ins_list'.
13951         (MonoInst): Replace next pointer with list head 'node'.
13952         (MonoCallInst): Make 'out_args' a MonoInstList.
13953         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13954         (MonoCompile): Delete reverse_inst_list and
13955         reverse_inst_list_len.
13956         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13957         mono_arch_lowering_pass, mono_arch_local_regalloc,
13958         mono_arch_output_basic_block, mono_arch_emit_prolog):
13959         Convert to new instruction lists.
13960         (insert_after_ins): Delete.
13961         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13962         instruction lists.
13963         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13964         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13965         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13966         mono_emulate_opcode, mono_emit_load_got_addr,
13967         inline_method, mono_method_to_ir, mono_print_bb_code,
13968         print_dfn, decompose_pass, nullify_basic_block,
13969         replace_out_block_in_code, remove_block_if_useless,
13970         merge_basic_blocks, move_basic_block_to_end,
13971         try_unsigned_compare, optimize_branches, mono_print_code,
13972         mini_select_instructions, remove_critical_edges): Likewise.
13973         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13974         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13975         mono_arch_output_basic_block, mono_arch_emit_prolog):
13976         Likewise.
13977         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13978         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13979         mono_arch_output_basic_block): Likewise.
13980         (inst_list_prepend, insert_after_ins): Delete.
13981         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13982         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13983         instruction lists.
13984         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13985         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13986         mono_arch_emit_prolog): Likewise.
13987         * cfold.c (mono_constant_fold): Likewise.
13988         * liveness.c (visit_bb, mono_analyze_liveness,
13989         optimize_initlocals): Likewise.
13990         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13991         * graph.c (mono_draw_code_cfg): Likewise.
13992         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13993         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13994         mono_ssa_cprop): Likewise.
13995         * abcremoval (get_relations_from_previous_bb, process_block):
13996         Likewise.
13997         * local-propagation (mono_cprop_invalidate_values,
13998         mono_local_cprop_bb): Likewise.
13999         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14000         peephole_pass, mono_arch_output_basic_block,
14001         mono_arch_emit_prolog): Likewise.
14002         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14003         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14004         mono_arch_emit_prolog): Likewise.
14005         (insert_after_ins): Delete.
14006         * aliasing.c (print_code_with_aliasing_information,
14007         mono_build_aliasing_information, mono_aliasing_deadce):
14008         Convert to new instruction lists.
14009         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14010         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14011         mono_arch_local_regalloc, mono_arch_output_basic_block):
14012         Likewise.
14013         (insert_after_ins): Delete.
14014         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14015         peephole_pass, mono_arch_output_basic_block): Convert to
14016         new instruction lists.
14017         * mini-codegen (InstList, inst_list_prepend,
14018         insert_after_ins): Delete.
14019         (insert_before_ins, get_register_force_spilling,
14020         get_register_spilling, free_up_ireg, free_up_reg,
14021         create_copy_ins, create_spilled_store, alloc_int_reg,
14022         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14023         to new instruction lists.
14024         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14025         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14026         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14027         (insert_after_ins): Delete.
14028         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14029         mono_arch_local_regalloc, mono_arch_output_basic_block,
14030         mono_arch_call_opcode): Convert to new instruction lists.
14031         (insert_after_ins): Delete.
14032         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14033         peephole_pass, mono_arch_output_basic_block,
14034         mono_arch_emit_prolog): Convert to new instruction lists.
14035
14036 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14037
14038         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14039
14040         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14041         Fixes #353182.
14042
14043         * Makefile.am (version.h): Make this work with non-bash shells.
14044
14045 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14046
14047         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14048
14049 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14050
14051         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14052         the InitializeArray optimization.
14053
14054 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14055
14056         * mini.c driver.c: Don't include os/gc_wrapper.h.
14057
14058 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14059
14060         * mini.c (print_jit_stats): Print GC statistics if available.
14061
14062 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14063
14064         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14065
14066 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14069
14070 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14071
14072         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14073         
14074         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14075
14076         * driver.c (mono_main): Ditto.
14077
14078 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14079
14080         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14081
14082         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14083         in the vtable can't be encoded.
14084         (compile_method): Ditto.
14085
14086 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14087
14088         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14089         defined.
14090
14091         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14092         lmf->rbp.
14093
14094         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14095         the top LMF entry belongs to the current method.
14096
14097         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14098
14099 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14100
14101         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14102         
14103         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14104
14105         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14106
14107         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14108
14109         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14110
14111         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14112         implementation.
14113
14114         * basic-float.cs: Add an ulong->double cast test.
14115
14116 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14117
14118         * mini.c (mono_method_to_ir): Fix a warning.
14119
14120 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14121
14122         * mini-ops.h: Add OP_SWITCH.
14123
14124         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14125         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14126
14127 2007-12-11  Geoff Norton  <gnorton@novell.com>
14128
14129         * mini-s390x.c: Minor change to the MAX() define to allow
14130         it to compile with other gcc versions.
14131
14132 2007-12-11  Geoff Norton  <gnorton@novell.com>
14133
14134         * cpu-s390x.md:
14135         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14136
14137 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14138
14139         exceptions-arm.c (mono_arch_get_restore_context): Restore
14140         the frame pointer.
14141
14142         exceptions-arm.c (throw_exception): Save the frame pointer.
14143         This is a partial fix for #323747. Only the client side is
14144         fixed.
14145
14146 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14147
14148         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14149         was using an unrelated variable to log the class which
14150         needed the cctor to be called. This was crashing on arm.
14151
14152 2007-12-09  Robert Jordan  <robertj@gmx.net>
14153
14154         * mini-x86.c (mono_arch_emit_epilog):
14155         Consider all kinds of 64-bit types. Fixes #323114.
14156
14157 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14158
14159         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14160
14161 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14164
14165 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14166
14167         * mini.c: run type ctor before allocating an object, not only
14168         when running it's constructor method (fixes at least part of bug #342507).
14169
14170 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14171         
14172         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14173         
14174         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14175         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14176         function.
14177
14178         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14179         mono_generic_class_init_trampoline () the same as it is done with the other
14180         trampolines.
14181
14182         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14183         aot-runtime.c aot-compiler.c: Implement AOT support.    
14184
14185 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14186
14187         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14188         build for archs which don't have the vtable trampoline defined
14189         yet.
14190
14191 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14192
14193         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14194
14195         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14196
14197         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14198
14199         * tramp-<ARCH>.c: Use the new helper function.
14200
14201 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14202
14203         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14204         trampoline call, which takes a vtable argument.
14205
14206         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14207         OP_TRAMPCALL_VTABLEs like other calls.
14208
14209         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14210         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14211         call.  Implemented a support function which fetches the vtable
14212         from a register set.
14213
14214         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14215         Implemented a generic class init trampoline, using the
14216         OP_TRAMPCALL_VTABLE opcode.
14217
14218         * mini.c: Implemented static field access when sharing generic
14219         code.  This implies initing the class using the new
14220         OP_TRAMPCALL_VTABLE call.
14221
14222 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14223
14224         * mini.c: Don't compile methods with sharing enabled if their
14225         classes are disabled for sharing.
14226
14227 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14228
14229         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14230         opcodes. Fixes #346563.
14231
14232         * objects.cs: Add a new test.
14233
14234         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14235
14236         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14237         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14238
14239 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14240
14241         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14242
14243 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14244
14245         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14246         code stream.
14247
14248 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14249
14250         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14251
14252         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14253         optimization in the AOT case.
14254         
14255 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14256
14257         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14258         
14259         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14260
14261         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14262
14263         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14264
14265         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14266         is created by the inlined delegate ctor.
14267
14268         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14269
14270         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14271
14272 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14273
14274         * cpu-x86.md: Fix the length of ckfinite.
14275
14276 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14277
14278         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14279         
14280         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14281         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14282
14283         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14284
14285         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14286         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14287
14288 2007-11-28  Martin Baulig  <martin@ximian.com>
14289
14290         * mini-x86.c
14291         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14292         after creating the trampoline.
14293
14294 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14295
14296         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14297
14298         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14299         the same version.
14300
14301         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14302         instead of the calling method to help AOT.
14303
14304         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14305
14306 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14307
14308         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14309         is defined.
14310
14311 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14314         
14315         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14316         (encode_method_ref): No need to handle generic method definitions specially.
14317
14318         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14319
14320         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14321         decode_klass_info.
14322
14323         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14324         encode_klass_info.
14325         (compile_method): Enable generic sharing.
14326
14327 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14328
14329         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14330         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14331
14332         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14333         generic code.
14334
14335         * mini-trampolines.c: Fix a warning.
14336
14337         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14338         NEW_PCONST.
14339         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14340         (generic_class_is_reference_type): Remove unused function.
14341
14342         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14343         in the generic vtable trampoline case.
14344
14345         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14346         
14347         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14348         return an AOT method based on a vtable slot.
14349
14350         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14351
14352         * mini.c (mini_get_vtable_trampoline): Export this.
14353
14354 2007-11-22  Martin Baulig  <martin@ximian.com>
14355
14356         * debug-debugger.h
14357         (MonoDebuggerInfo): Move `debugger_version' up.
14358
14359 2007-11-22  Martin Baulig  <martin@ximian.com>
14360
14361         * mini-amd64.c
14362         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14363
14364         * mini-trampolines.c
14365         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14366         after compiling the method.
14367
14368 2007-11-20  Martin Baulig  <martin@ximian.com>
14369
14370         * debug-mini.c
14371         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14372         (mono_debugger_remove_breakpoint): Likewise.
14373         (mono_debugger_check_breakpoints): Likewise.
14374
14375         * debug-debugger.c: Implement the new breakpoint interface here.
14376
14377 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14378
14379         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14380         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14381
14382         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14383
14384 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14385
14386         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14387
14388         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14389         mini.c.
14390
14391         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14392         mini.c.
14393
14394         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14395         returning a vtype in a register.
14396
14397         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14398         here from the arch specific code.
14399
14400         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14401         mini.c.
14402
14403         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14404         (mono_arch_emit_prolog): Increment maximum prolog size.
14405
14406         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14407         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14408
14409         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14410         MonoGenericSharingContext.
14411
14412         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14413         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14414
14415 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14416
14417         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14418         which extract fields out of the runtime generic context.  Full
14419         sharing of the NEWARR opcode.
14420
14421 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14422
14423         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14424         --enable-minimal=ssa.
14425
14426 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14427
14428         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14429         mono_marshal_get_delegate_invoke () signature change.
14430
14431 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14432
14433         * mini.c: Removed the shared context in favor of the generic
14434         sharing context.  Allocate the MonoJitInfo structure with room for
14435         the generic sharing context if it's needed.
14436
14437         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14438         domain-internals.h now.
14439
14440         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14441
14442         * generic-sharing.c: Several changes for working without a shared
14443         context and instead operating on open types instead.
14444
14445 2007-11-12  David S. Miller  <davem@davemloft.net>
14446
14447        * inssel-sparc.brg: Fix double instruction emit.
14448
14449 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14450
14451         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14452         Get/Set/Address methods.
14453         
14454         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14455         mono_marshal_get_delegate_invoke signature change.
14456
14457 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14458
14459         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14460         This can happens with dynamic methods. Fixes the other bug in #322722.
14461
14462 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14463
14464         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14465         BX call sequence.
14466
14467         * mini-arm.c (arm_patch): Implement patching of BX call
14468         sequence. Fixes one of the bugs in #322722.
14469
14470 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14471
14472        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14473        under Linux.  We only need to flush every 32-byte cache line.    
14474
14475 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14476
14477         * mini.c:
14478         move_basic_block_to_end: Add branches when needed, eventually creating
14479         a new BB.
14480         optimize_branches: added a parameter that tells if it's ok to create
14481         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14482         and avoid calling move_basic_block_to_end when it's not ok.
14483         Fixes bug 318677.
14484
14485 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14486
14487         * mini.c: Abort inlining call to InitializeArray if something
14488         looks wrong.  Let the icall handle it, which now has proper safety
14489         checks.
14490
14491 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14492
14493         * mini.c (mono_spill_call): add support for soft-float.
14494
14495         * mini.c (mono_method_to_ir): add support for soft-float
14496         to inlined functions that return float.
14497
14498         * mini.c (mono_method_to_ir): add support for soft-float
14499         to cee_stsfld opcode on float fields.
14500
14501 2007-11-05  Geoff Norton  <gnorton@novell.com>
14502
14503         * mini-x86.h: Fix the structure access for X86 Leopard.
14504
14505
14506 2007-11-05  Martin Baulig  <martin@ximian.com>
14507
14508         * mini-trampolines.c
14509         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14510         after compiling the method to notify the debugger.
14511
14512 2007-11-05  Martin Baulig  <martin@ximian.com>
14513
14514         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14515
14516 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14517
14518         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14519         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14520
14521 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14522
14523         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14524         native-to-managed wrappers.
14525         
14526 2007-11-01  Geoff Norton  <gnorton@novell.com>
14527
14528         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14529         members.
14530
14531 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14532
14533         * mini.c, mini-x86.c: when getting back from unmanaged code
14534         to managed via a marshaled delegate we also need to set the
14535         right domain.
14536
14537 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14538
14539         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14540         for amd64.
14541
14542 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14543
14544         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14545         let the debugger or other external agents to tell the JIT when
14546         a sw breakpoint has been inserted in the code that the JIT needs
14547         to be able to inspect.
14548
14549 2007-10-31  Martin Baulig  <martin@ximian.com>
14550
14551         * debug-debugger.h
14552         (MonoDebuggerInfo): Remove `runtime_class_init'.
14553
14554 2007-10-30  Martin Baulig  <martin@ximian.com>
14555
14556         * debug-mini.h
14557         (mono_debugger_thread_created): Added `MonoThread *' argument.
14558         (mono_debugger_extended_notification): New public method.
14559         (mono_debugger_trampoline_compiled): New public method.
14560
14561         * debug-mini.c
14562         (MonoDebuggerThreadInfo): Added `thread' and
14563         `extended_notifications' fields.
14564
14565         * debug-debugger.c
14566         (debugger_executable_code_buffer): New static variable.
14567
14568         * debug-debugger.h
14569         (MonoDebuggerInfo): Added `executable_code_buffer',
14570         `executable_code_buffer_size', `breakpoint_info_area',
14571         `breakpoint_table' and `breakpoint_table_size'.
14572
14573 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14574
14575         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14576         that IP  either is an unused value or the vtable pointer. IMT 
14577         calls use vtable + offset now. Reduced by almost half the size
14578         of IMT entries.
14579
14580 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14581
14582         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14583         defines to access param registers. Replace long usage with
14584         gsize as sizeof(long) != sizeof(void*) on Win64.
14585
14586         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14587         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14588         instead of non-existant _GetAddressOfReturnAddress.
14589
14590         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14591         param registers. Save/restore %rdi and %rsi in MonoLMF.
14592
14593         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14594         param registers. Modify (throw_exception) signature to take 
14595         %rdi and %rsi on Win64. 
14596
14597         Code is contributed under MIT/X11 license.
14598
14599 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14600
14601         * helpers.c: unlink debugging output files.
14602
14603 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14604
14605         * mini.c: Move mono_create_ftnptr () to object.c.
14606
14607 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14608
14609         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14610         optional. This function can now be used to disassemble code generated
14611         outside the JIT such as trampolines and IMT thunks.
14612
14613         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14614
14615         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14616         vtable pointer from a ldr instruction.
14617
14618         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14619         new IMT call sequence.
14620
14621         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14622         call sequence for interface invocations.
14623
14624         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14625         for imt support. This function is empty since IMT on ARM requires no
14626         special handling on the IR side.
14627
14628         * mini-arm.c (mono_arch_find_imt_method): added, required for
14629         imt support.
14630
14631         * mini-arm.c (mono_arch_find_this_argument): added, required
14632         for imt support.
14633
14634         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14635         a ldr instruction to load a value stored in the code stream.
14636
14637         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14638         for imt support.
14639
14640
14641 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14642
14643         * mini.c (mini_init): Install the jump trampoline callback.
14644
14645 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14646
14647         * mini-trampolines.c: handle synchronized methods with the common
14648         vtable trampoline (bug #335601).
14649
14650 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14651
14652         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14653
14654         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14655         64 bit platforms.
14656
14657         * mini-ia64.h mini-ia64.c: Add support for IMT.
14658
14659         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14660         prolog. Fixes #331958.
14661
14662 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14663
14664         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14665
14666 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14667
14668         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14669         trampoline.
14670
14671 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14672
14673         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14674         trampoline.
14675
14676 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14677
14678         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14679         trampoline.
14680
14681 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14682
14683         * mini-trampolines.c: changed the magic rampoline to understand
14684         the common vtable trampoline method: the method to invoke is
14685         determined by the vtable displacement of the call.
14686
14687 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14688
14689         * mini.c, mini.h: register the common vtable trampoline if the
14690         architecture supports it.
14691
14692 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14693
14694         * cpu-amd64.md: use the correct max length for tls_get.
14695
14696 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14697
14698         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14699         CEE_STELEM_ANY. Fixes #333696.
14700
14701 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14702
14703         * exceptions-x86.c: provide more graceful handling of the case where
14704         we followed a bogus function pointer from managed code (bug #332866).
14705
14706 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14707
14708         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14709         replaces the generic_shared flag and will carry more information
14710         in the future.
14711
14712         * generic-sharing.c: Added mini_type_stack_size() which allows
14713         allows open types if given a generic sharing context.
14714         mini_get_basic_type_from_generic() takes a
14715         MonoGenericSharingContext* instead of a MonoCompile* now.
14716
14717         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14718         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14719         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14720         changes above.  Just passing arguments through to the right
14721         places.
14722
14723 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14724
14725         * mini-arm.c: unify the call emission to emit_code_seq().
14726
14727 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14728
14729         * tramp-arm.c: reduced the trampoline size.
14730
14731 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14732
14733         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14734         variable handling out of arch-specific code.
14735
14736 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14737
14738         * mini-arm.c: implemented fast delegate dispatch.
14739
14740 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14741
14742         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14743         that fp elimination is turned off if the space required by locals is too
14744         big. Fixes #331958.
14745
14746 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14747
14748         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14749         ARM to the new style trampoline.
14750
14751 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14752
14753         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14754
14755         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14756
14757 2007-10-09  Martin Baulig  <martin@ximian.com>
14758
14759         * debug-debugger.h
14760         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14761         `field_info_offset_offset'.     
14762
14763 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14764
14765         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14766         removed more internal usage of the r11 register and made it available
14767         to the register allocator.
14768
14769 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14770
14771         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14772         when sharing generics and treat type variables as references.
14773
14774 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14775
14776         * mini-ppc.c: started removing the internal uses of register r11
14777         to eventually allow the register allocator to manage it as an
14778         additional available register.
14779
14780 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14781
14782         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14783
14784 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14785
14786         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14787         specific trampolines as they are not performance critical as a jump
14788         target (maybe align as before only for AOT code?). This saves about
14789         200 KB of native code on x86 for monodevelop startup.
14790
14791 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14792
14793         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14794         monodevelop startup.
14795
14796 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14797
14798         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14799
14800         * mini-sparc.h mini-sparc.c: Implement IMT support.
14801
14802         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14803         its smaller and doesn't clobber sparc_g1.
14804
14805         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14806
14807 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14808
14809         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14810
14811 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14812
14813         * mini-ppc.c: implemented fast delegate invocation.
14814
14815 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14816
14817         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14818
14819 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14820
14821         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14822         code to the new style trampoline in preparation for IMT support.
14823
14824 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14825
14826         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14827         systems already. This also reduces the specific trampiline sizes and
14828         prepares for the use of r12 as the IMT identifier register.
14829
14830 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14831
14832         * mini-mips.h: endianess fix (simplified from a patch by
14833         Thomas Kunze <thommy@tabao.de>, bug #323737).
14834
14835 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14836
14837         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14838         to access ucontext fields and enable netbsd support
14839         (partially from Magnus Henoch <mange@freemail.hu>).
14840
14841 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14842
14843         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14844         use the preprocessor from the CPP env var if it is set.
14845
14846 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14847
14848         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14849         code, before interface_offset gets used.
14850
14851 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14852
14853         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14854         mono_class_setup_vtable () before accessing klass->vtable.
14855
14856 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14857
14858         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14859         hackish.
14860
14861 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14862
14863         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14864         IMT slots (this saves hundreds of KB of memory in programs like
14865         IronPython and Monodevelop).
14866
14867 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14868
14869         * mini.c: print the delegate counter.
14870
14871 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14872
14873         * mini-x86.c: make it easier to enable the debugging code for IMT
14874         slots.
14875
14876 2007-09-28  Martin Baulig  <martin@ximian.com>
14877
14878         * debug-debugger.h
14879         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14880         `mono_method_klass_offset' and `mono_method_token_offset'.
14881
14882 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14883
14884         * mini.c: First generics sharing implementation.  Can only share
14885         in very simple cases.  If sharing doesn't work it falls back to
14886         dedicated compilation.
14887
14888         * mini.h: Flag in MonoCompile to specify whether generic
14889         compilation is shared.  Flags enum for marking which generic inst
14890         of a context is used.  Prototypes for helper functions.
14891
14892         * generic-sharing.c: Helper functions for generic method sharing.
14893
14894         * optflags-def.h: Optimization flag (gshared) for enabling generic
14895         method sharing added.
14896
14897         * Makefile.am: generic-sharing.c added.
14898
14899 2007-09-19 Daniel Nauck <dna@mono-project.de>
14900
14901         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14902
14903 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14904         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14905         fixes bug 325507.
14906
14907 2007-09-19  Martin Baulig  <martin@ximian.com>
14908
14909         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14910         mono_debug_cleanup() is now part of mono_cleanup().
14911
14912 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14913
14914         * driver.c (mono_main): Fix a warning.
14915
14916 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14917
14918         * aot-compiler.c: Optimize various parts when processing large assemblies.
14919         Fixes ##325568.
14920
14921         * mini.c (mono_patch_info_hash): Improve hash function.
14922
14923 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14924
14925         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14926         
14927         Code is contributed under MIT/X11 license.
14928
14929 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14930
14931         * mini.c (mini_init): Fix a leak.
14932
14933         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14934
14935 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14936
14937         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14938
14939 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14942
14943 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14944
14945         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14946         variance tests.
14947
14948         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14949
14950         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14951
14952         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14953
14954         * aot-runtime.c (decode_patch_info): Ditto.
14955
14956 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14957
14958         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14959         static case. Cache delegates in architecture specific code, 
14960         based on number of parameters.
14961         
14962         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14963         in architecture specific code, based on number of parameters.
14964         
14965         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14966         caching happen in architecture specific code now.
14967         
14968         Code is contributed under MIT/X11 license.
14969
14970 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14971
14972         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14973         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14974         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14975
14976         Code is contributed under MIT/X11 license.
14977
14978 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14979         * mini.c: (mono_thread_abort) Fixed bug #82416.
14980
14981 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14982
14983         * mini.: hook the new managed GC allocation feature into the JIT.
14984
14985 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14986
14987         * mini.c: implementation for the new runtime tls opcode.
14988
14989 2007-09-11  Martin Baulig  <martin@ximian.com>
14990
14991         * debug-debugger.h
14992         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14993         `mono_method_inflated_offset'.
14994
14995 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14996
14997         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14998         async exceptions into a method.
14999
15000         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15001         purpose of testing whenever the unwinder works at every instruction.
15002
15003 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15004
15005         * mini.c: check accessibility of method used in ldftn (fixes
15006         bug #82635).
15007
15008 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15009
15010         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15011
15012         * inssel.brg: Fix a warning.
15013
15014 2007-09-03  Martin Baulig  <martin@ximian.com>
15015
15016         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15017         now takes the `main_method' as argument.
15018
15019 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15020
15021         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15022
15023 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15024
15025         * driver.c: include the cil-coff.h header on Windows.
15026         
15027         Code is contributed under MIT/X11 license.
15028
15029 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15030
15031         * mini.c, driver.c: don't include the cil-coff.h header.
15032
15033 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15034
15035         * mini.c: flag places that needs fixes fo soft-float support.
15036
15037 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15038
15039         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15040         endian systems (partially from Dean Jenkins, bug #81924).
15041
15042 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15043
15044         * mini.c (check_linkdemand): Remove embedded reference object in
15045         call to LinkDemandSecurityException.
15046         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15047         with an IntPtr instead of a reference object.
15048
15049 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15050
15051         * mini.c (handle_initobj): Handle alignment properly.
15052
15053         * inssel.brg (mini_emit_memset): Ditto. 
15054
15055         * inssel.brg (mini_emit_memcpy): Ditto. 
15056
15057         * inssel-sparc.brg: Ditto.              
15058
15059         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15060
15061 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15062
15063         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15064         exceptions raised in unmanaged code. Fixes part of #82594.
15065
15066 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15067
15068         * mini.c (mono_method_to_ir), declsec.c
15069         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15070
15071 2007-08-22  Martin Baulig  <martin@ximian.com>
15072
15073         * debug-mini.h
15074         (MonoDebuggerThreadInfo): New typedef.
15075         (mono_debugger_thread_table): New global variable.
15076         (mono_debugger_thread_created): New public function.
15077         (mono_debugger_thread_cleanup): New public function.
15078
15079         * debug-debugger.h
15080         (MonoDebuggerInfo):
15081         - removed `get_current_thread' and `lookup_assembly'.
15082         - removed `data_table'.
15083         - added `thread_table'.
15084
15085         * mini.c
15086         (mono_thread_start_cb): Call mono_debugger_thread_created().
15087         (mono_thread_attach_cb): Likewise.
15088         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15089         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15090         initial domain.
15091
15092         * driver.c (mono_main): Move mono_debug_init() up, before calling
15093         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15094
15095 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15096
15097         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15098         together when passing several arguments of type double (gives a small
15099         speedup and saves a few bytes of generated code).
15100
15101 2007-08-20  Jb Evain  <jbevain@novell.com>
15102
15103         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15104
15105 2007-08-20  Jb Evain  <jbevain@novell.com>
15106
15107         * mini.c (mono_method_to_ir): throw MethodAccessException
15108         and FieldAccessException instead of InvalidProgramException.
15109
15110 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15111
15112         * mini.c: CoreCLR security checks.
15113
15114         * mini.h: Removed MonoSecurityMode (moved to
15115         metadata/security-manager.h) and mono_security_mode global var
15116         (replaced by set/get functions in security-manager.h).
15117
15118         * driver.c: Added "core-clr-test" security mode for testing.  Used
15119         set-function for setting security mode.
15120
15121 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15122
15123         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15124         the new jit_info_table.
15125
15126         * driver.c: Test code for the new jit_info_table (enabled by the
15127         define MONO_JIT_INFO_TABLE_TEST).
15128
15129 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15130
15131         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15132         detection of call <REG> instruction sequence. Fixes build on freebsd.
15133
15134 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15135
15136         * mini-exceptions.c: Fix a warning.
15137
15138 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15139
15140         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15141         stack overflow handling code on amd64 too.
15142
15143         * mini-exceptions.c (mono_setup_altstack): Make this use 
15144         mono_thread_get_stack_bounds ().
15145
15146         * mini-x86.h: Disable sigaltstack on solaris x86.
15147
15148 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15149
15150         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15151
15152 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15153
15154         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15155
15156 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15157
15158         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15159
15160         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15161
15162 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15163
15164         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15165         due to alignment.
15166
15167 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15168
15169         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15170         to be emitted (bug #82281).
15171
15172 2007-08-01  Martin Baulig  <martin@ximian.com>
15173
15174         Merged the `debugger-dublin' branch.
15175
15176         * debug-debugger.h (MonoDebuggerInfo):
15177         Removed the `old_*' compatibility entries.
15178         Added `debugger_version' and `data_table'.
15179         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15180         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15181
15182         * debug-mini.c
15183         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15184         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15185         instead of a `gconstpointer'.
15186         (mono_debugger_insert_method_breakpoint): Return a
15187         `MonoDebugMethodAddressList *'.
15188
15189 2007-06-28  Martin Baulig  <martin@ximian.com>
15190
15191         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15192
15193 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15194
15195         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15196         __builtin_frame_address () since it is broken on older gcc versions.
15197
15198 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15199
15200         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15201         on the stack overflow handling and made the managed stack overflows
15202         catchable in most cases using soft guard pages.
15203         * exceptions-x86.c: added code to restore the protection in the soft
15204         guard pages at the end of exception handling.
15205
15206 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15207
15208         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15209
15210 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15211
15212         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15213         exception handling.
15214
15215 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15216
15217         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15218         signal handling support until it has been ported to the new mechanism.
15219         * mini.c: fixed stack overflow detection and use the new
15220         architecture code  to handle signals on the altstack.
15221
15222 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15223
15224         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15225         stack overflows on the alt stack.
15226
15227 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15228
15229         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15230         stack overflows on the alt stack.
15231
15232 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15233
15234         * exceptions-ppc.c: cleanup preparing for altstack support.
15235
15236 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15237
15238         * exceptions-arm.c: cleanup preparing for altstack support.
15239
15240 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15241
15242         * mini.c (print_jit_stats): Output hazard pointer stats.
15243
15244 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15245
15246         * driver.c, mini.c: Replaced security mode flags with a single
15247         enum variable.
15248
15249 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15250
15251         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15252
15253 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15254
15255         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15256         (which doesn't do anything yet) for activating Core CLR
15257         (Silverlight) security.
15258
15259 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15260
15261         * mini-codegen.c: work around a possible gcc bug on arm.
15262
15263 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15264
15265         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15266         message for platforms that don't support AOT compilation.
15267
15268 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15269
15270         * mini.h, mini.c, driver.c: temporary smcs hack.
15271
15272 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15273
15274         * mini-arm.h, mini-arm.c: arm EABI fixes.
15275
15276 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15277
15278         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15279         case.
15280
15281         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15282         trampolines taking a method argument.
15283
15284         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15285
15286         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15287         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15288
15289         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15290         JIT compilation throws an exception. Fixes #82050.
15291
15292 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15293
15294         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15295         with the MONO_EXCEPTION_ defines.
15296
15297 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15298
15299         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15300         #82117.
15301         
15302         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15303         the cause of an assertion.
15304
15305 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15306
15307         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15308         removed.
15309
15310 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15311
15312         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15313         assert. Should fix #82103.
15314
15315 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15316
15317         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15318         here too. Fixes #82095.
15319
15320         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15321         addresses.
15322
15323         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15324
15325         * mini-amd64.h: Enable IMT for amd64.
15326         
15327         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15328
15329 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15330
15331         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15332
15333 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15334
15335         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15336         as soon as check_linkdemand sets an exception_type.
15337
15338 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15339
15340         * mini-x86.c: fixed offsets for IMT call sequence.
15341         * mini-x86.h: enable IMT again.
15342
15343 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15344
15345         * trace.c (mono_trace_enter_method): Decode MonoType too.
15346
15347         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15348
15349         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15350
15351         * mini-amd64.c: Add preliminary IMT implementation.
15352         
15353 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15354
15355         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15356         understand the new IMT-base interface invocation (thanks to
15357         Daniel Nauck for the report and the remote debugging session).
15358
15359 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15360
15361         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15362
15363 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15364
15365         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15366
15367 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15368
15369         * mini-trampolines.c: implement AOT IMT support.
15370         * mini-x86.h: enable IMT support for wider testing.
15371
15372 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15373
15374         * inssel.brg (emit_imt_argument): Add aot support here.
15375
15376         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15377
15378 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15379
15380         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15381         of the IMT implementation, partially from massi, with my
15382         implementation of the bsearch sequence. Disabled by default until
15383         the AOT code is implemented.
15384
15385 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15386
15387         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15388
15389         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15390
15391 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15392
15393         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15394         arch-independent IMT JIT code from Massimiliano
15395         Mantione (massi@ximian.com) with small cleanups from me.
15396
15397 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15398
15399         * Makefile.am: fix svn invocation to get the svn revision to be
15400         independent of the local language (build fix).
15401
15402 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15403
15404         * mini.c (inline_method): Reset cfg->exception_type if the
15405         inlining is aborted.  Fixes: 82049.
15406
15407 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15408
15409         * mini.c: remove assert from exception handling code when exception_ptr
15410         is not set.
15411
15412 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15413
15414         * mini.c (mono_codegen): Add an assert.
15415
15416         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15417         enter and leave code.
15418         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15419
15420 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15421
15422         * mini-ppc.c: fixed memory corruption for localloc(0)
15423         (bug #81852).
15424
15425 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15426         
15427         * mini.c: Fix warnings.
15428
15429 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15430
15431         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15432         to emit better double->int conversions.
15433
15434 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15435
15436         * mini.c: the provided Min/Max optimizations are valid for unisgned
15437         ints.
15438
15439 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15440
15441         * 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
15442
15443 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15444
15445         * mini.c (mono_running_on_valgrind): Add support for reporting the
15446         method and  its boundaries to valgrind.
15447
15448 2007-06-28  Martin Baulig  <martin@ximian.com>
15449
15450         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15451
15452 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15453
15454         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15455
15456         * generic.2.cs: Add new test case.
15457
15458 2007-06-25  Martin Baulig  <martin@ximian.com>
15459
15460         Merged the `debugger-dublin' branch.
15461
15462         * debug-mini.c
15463         (mono_debugger_insert_method_breakpoint): New public method.
15464         (mono_debugger_remove_method_breakpoint): Likewise.
15465         (mono_debugger_check_breakpoints): New static method.
15466         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15467
15468         * debug-debugger.h (MonoDebuggerInfo):
15469         Renamed (to keep backward compatibility in the vtable):
15470         `insert_breakpoint' -> `old_insert_breakpoint'.
15471         `remove_breakpoint' -> `old_remove_breakpoint'.
15472         `create_string' -> `old_create_string'.
15473         `lookup_class' -> `old_lookup_class'.
15474         `lookup_type' -> removed; changed into a dummy field.
15475         `lookup_assembly' -> `old_lookup_assembly'.
15476         Added (same functionality, but different signature):
15477         `create_string', `lookup_class', `lookup_assembly'
15478         Added new:
15479         `get_method_addr_or_bpt', `remove_method_breakpoint',
15480         `runtime_class_init'.
15481
15482         * debug-debugger.c: Merged the `debugger-dublin' branch.
15483
15484 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15485
15486         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15487         well.
15488         (peephole_pass): Likewise.
15489
15490 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15491
15492         * driver.c: hopefully make setaffinity work also for ancient
15493         versions of linux.
15494
15495 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15496
15497         * driver.c : win32 build fix.
15498
15499 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15500
15501         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15502         processor if it is set.
15503
15504 2007-06-21  Martin Baulig  <martin@ximian.com>
15505
15506         * debug-mini.h: New file.
15507
15508         * debug-mini.c
15509         (mono_debugger_insert_breakpoint_full): Moved here from
15510         ../metadata/mono-debug-debugger.c.
15511         (mono_debugger_remove_breakpoint): Likewise.
15512         (mono_debugger_breakpoint_callback): Likewise.
15513
15514 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15515
15516         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15517         changes in MonoGenericClass.
15518
15519 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15520
15521         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15522
15523 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15524
15525         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15526         removal of MonoGenericMethod.
15527
15528 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15529
15530         * mini-exceptions.c: hooks for the exception events profiling API.
15531
15532 2007-06-14  Randolph Chung  <tausq@debian.org>
15533
15534         * Makefile.ma: Add hppa target.
15535         * mini-arch.h: Include mini-hppa.h
15536         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15537         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15538         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15539
15540 2007-06-14  Randolph Chung  <tausq@debian.org>
15541
15542         * inssel.brg: Add rules for "chained" compare-branch operations so that
15543         a single compare op can affect multiple branches.  Adjust cost for
15544         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15545         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15546         cost for some rules so that they can more easily be overridden by
15547         per-arch rules (with fixes from lupus).
15548         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15549
15550 2007-06-13  Randolph Chung  <tausq@debian.org>
15551
15552         * mini-ops.h: Reorder branch ops so that they match the order of the
15553         corresponding CEE_* ops.  The code expects them this way.
15554         Add new ops for HPPA target.
15555         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15556
15557 2007-06-13  Randolph Chung  <tausq@debian.org>
15558
15559         * mini-exceptions.c: Handle cases where the stack grows towards
15560         larger addresses.
15561         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15562
15563 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15564
15565         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15566         counter.
15567         * driver.c: explain where a non-matching corlib is found.
15568
15569 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15570
15571         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15572
15573 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15574
15575         * mini-exceptions.c: Generate a method profile leave event during
15576         an exception to ensure that the profiler gets notified.
15577
15578 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15579
15580         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15581         branch.
15582
15583         * cpu-amd64.md: Add long_and/or/xor opcodes.
15584
15585 2007-06-06  Wade Berrier  <wberrier@novell.com>
15586
15587         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15588         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15589         length of instruction shr_imm (expected 8, got 10)
15590
15591 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15592
15593         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15594
15595 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15596
15597         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15598         MonoInternalHashTable again (fixed bug in the internal hash table
15599         code).
15600
15601 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15602
15603         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15604         Have to figure out what makes it crash the SWF regression.
15605
15606 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15607
15608         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15609
15610 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15611
15612         * mini.c: optimize out the type check when storing null in a
15613         reference array.
15614
15615 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15616
15617         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15618         MonoInternalHashTable.
15619
15620 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15621
15622         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15623         signed integer methods.
15624
15625 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15626
15627         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15628         permanently since the current approach doesn't work.
15629
15630 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15631
15632         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15633         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15634
15635 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15636
15637         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15638         the sreg2==rdx case.
15639         
15640         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15641         account if it contains a rex prefix.
15642         (peephole_pass): Handle OP_FMOVE as well.
15643
15644 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15645
15646         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15647         as it causes regressions.
15648
15649 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15650
15651         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15652         static case as well.
15653
15654         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15655
15656         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15657         (mono_arch_get_this_arg_from_call): Ditto.
15658
15659         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15660
15661         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15662         invoke_impl field.
15663
15664         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15665         (mono_arch_get_this_arg_from_call): Ditto.
15666
15667         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15668         
15669         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15670         try to create optimized invoke code and use that for further invocations. 
15671         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15672
15673         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15674
15675 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15676
15677         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15678         sealed classes or methods.
15679         *devirtualization.cs: tests for the new optimization
15680
15681 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15682
15683         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15684         by the update_volatile () function.
15685
15686 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15687
15688         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15689         require it.
15690
15691         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15692
15693 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15694
15695         * mini.c: Add configure checks for header files.
15696         * mini-x86.c: Add configure checks for header files.
15697         * trace.c: Add configure checks for header files.
15698         * aot-runtime.c: Add configure checks for header files.
15699         * aot-compiler.c: Add configure checks for header files.
15700         * driver.c: Add configure checks for header files.
15701         * mini-codegen.c: Add configure checks for header files.
15702         
15703         Code is contributed under MIT/X11 license.
15704
15705 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15706
15707         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15708         icompare_imm -128 + op_iclt. Fixes #81703.
15709
15710 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15711
15712         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15713
15714 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15715
15716         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15717         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15718         so that all isinst checks now use "interface_bitmap".
15719
15720 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15721
15722         * cpu-amd64.md (jmp): Fix a warning.
15723
15724         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15725
15726         * basic.cs: Add new regression test.
15727
15728         * basic.cs: Remove test which is now in basic-long.cs.
15729
15730         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15731
15732         * basic-long.cs: Add new test.
15733         
15734 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15735
15736         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15737
15738 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15739
15740         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15741
15742         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15743         places.
15744         
15745         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15746         throwing code a bit.
15747
15748         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15749         the exception throwing code a bit.
15750
15751         * mini-x86.c (get_call_info): Allocate result from a mempool.
15752
15753 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15754
15755         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15756
15757         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15758
15759         * mini.h (MonoCompile): Add 'token_info_hash' field.
15760
15761         * mini.c: Save token->method associations during compilation so the AOT 
15762         compiler can use it.
15763         
15764         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15765         which reference generic classes and methods.
15766
15767 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15768
15769         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15770
15771         * aot-compiler.c (compile_method): Fix a typo in a comment.
15772
15773         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15774
15775         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15776         everything generic.
15777
15778         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15779
15780 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15781
15782         * mini.h (MonoCompile): Add 'args' field.
15783
15784         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15785         into cfg->args.
15786
15787         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15788
15789 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15790
15791         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15792
15793         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15794
15795         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15796         opcodes for some opcodes.
15797
15798         * mini.h *.brg *.c: Use the new opcodes.
15799
15800 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15801
15802         * mini.h: Bumped aot revision.
15803
15804         * inssel.brg: modified code generation of type checks for interfaces
15805         to use the new "MonoClass.interface_bitmap" instead of the old
15806         "MonoClass.interface_offsets".
15807
15808 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15811
15812 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15813
15814         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15815         64 bit platforms.
15816
15817 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15818
15819         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15820
15821 2007-04-27  Wade Berrier  <wberrier@novell.com>
15822
15823         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15824         mini.h) to fix build.
15825
15826 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15827
15828         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15829         
15830         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15831         causes the corlib unit tests to fail.
15832
15833 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15834
15835         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15836
15837         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15838
15839         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15840         opcodes to the comparison relations.
15841
15842         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15843         opcodes to their types.
15844         
15845         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15846
15847         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15848         it in cfg->arch.cinfo.
15849
15850         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15851
15852         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15853         cfg->cil_offset_to_bb.
15854
15855 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15856
15857         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15858         created becase of initlocals.
15859
15860 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15861
15862         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15863         Sergey Tikhonov <tsv@solvo.ru>.
15864
15865 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15866
15867         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15868
15869 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15870
15871         * cpu-s390.md (break): Correct the length of break instruction.
15872
15873 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15874
15875         * mini.c: fix a couple of soft-float issues and comments.
15876
15877 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15878
15879         * trace.c (is_filenamechar): - is also a filename char.
15880
15881 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15882
15883         * mini-s390.c: Correct checking for enum type in return value processing.
15884
15885 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15886
15887         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15888         (version.h): Makefile is in the build directory.
15889
15890 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15891
15892         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15893
15894 2007-04-11  Martin Baulig  <martin@ximian.com>
15895
15896         * mini.c (can_access_member): Fix handling of generic classes;
15897         fixes #81259.
15898
15899 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15900
15901         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15902
15903 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15904
15905         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15906
15907 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15908
15909         * mini-codegen.c: make sure the right spill amount is
15910         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15911
15912 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15913
15914         * mini-ppc.c: fixes for the fp_branch_nan test.
15915
15916 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15917
15918         * basic.cs: Comment out new test which still fails on ia64.
15919
15920 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15921
15922         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15923
15924 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15925
15926         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15927
15928 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15929
15930         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15931         on 64 bit machines. Fixes part of #80738.
15932
15933         * basic.cs: Add regression test.
15934
15935 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15936
15937         * inssel.brg basic.cs: Revert previous change to fix build.
15938
15939         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15940         platforms.
15941         
15942         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15943
15944         * basic.cs: Add new regression test.
15945
15946 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15947
15948         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15949         many arguments.
15950
15951 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15952
15953         * cpu-s390x.md: Correct length of break instruction.
15954
15955 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15956
15957         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15958         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15959
15960 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15961
15962         * *.c: Begin WIN64 port.
15963         * mini.c:  Use correct register in profiler.
15964         * mini-amd64.c: No inline assembly on Win64.
15965         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15966         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15967         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15968         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15969         mono_arch_ip_from_context for Win64.
15970         
15971         Contributed under MIT/X11 license.
15972
15973 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15974
15975         * exceptions-amd64.c (seh_handler): Ditto.
15976
15977         * exceptions-x86.c (seh_handler): Fix a memory leak.
15978
15979 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15980
15981         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15982         mini-s390x.c: fixed peephole optimizations to deal
15983         correctly with 1 and 2 byte reload avoidance.
15984
15985 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15986
15987         * cpu-s390.md, cpu-s390x.md: update localloc length.
15988
15989 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15990
15991         * cpu-g4.md: added missing descriptions.
15992
15993 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15994
15995         *  Makefile.am: Add support so the tail tests are not executed on
15996         PowerPC as that is a known limitation of the PowerPC port.
15997
15998 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15999
16000         * runmdesc.bat:  Move to msvc directory.
16001         
16002 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16003
16004         * runmdesc.bat:  Run executable that was produced by the current
16005         target and sent via an argument.
16006         
16007 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16008
16009         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16010         #81102.
16011
16012         * generics.2.cs: Add regression test.
16013
16014 2007-03-09  Wade berrier  <wberrier@novell.com>
16015
16016         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16017
16018 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16019
16020         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16021         AOT code depends on this.
16022
16023 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16024
16025         * mini.c: more precise tracking of types in the eval stack
16026         (part of fix for bug #81044).
16027
16028 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16029
16030         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16031
16032         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16033
16034 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16035
16036         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16037
16038         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16039
16040 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16041
16042         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16043         a pointer on 64 bit systems. Fixes #80190.
16044
16045         * iltests.il: Add new regression test.
16046
16047 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16048
16049         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16050
16051 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16052
16053         * trace.c: Remove an erroneous alignemnt check when tracing.
16054           Fixes --trace on OSX86.
16055
16056 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16057
16058         * mini-$(arch).h: initialize SP in context for all the archs.
16059
16060 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16061
16062         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16063         regressions in the thread tests.
16064
16065 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16066
16067         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16068         - fixed implementation of LOCALLOC opcode
16069         - implemented non-un compare for floats
16070         - code cleanup
16071         - implementation of FDIV and CKFINITE opcodes
16072         - fixes for latest mono updates
16073         - additional arch opcodes
16074
16075 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16076
16077         * Makefile.am: simplify and merge rules for cross-compilation.
16078
16079 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16080
16081         * local-propagation.c: Actually *apply* the fix for bug 80591...
16082
16083 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16084
16085         * mini-exceptions.c: backuot part of the last change
16086         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16087
16088 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16089         * inssel.brg: Fix bug 59286.
16090
16091
16092 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16093
16094         * mini-exceptions.c: patch from Zoltan to correctly check for
16095         stack boundaries (using the stack register, not the frame register),
16096         fixes bugs #80724, #79717.
16097
16098 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16099
16100         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16101         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16102
16103         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16104         presence of frame pointer elimination.
16105
16106 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16107         
16108         * mini-x86.h: NetBSD UCONTEX_REG defines.
16109
16110 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16111
16112         * inssel-amd64.brg: Fix amd64 build.
16113
16114 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16115
16116         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16117         on amd64.
16118
16119 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16120
16121         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16122         ends.
16123
16124         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16125
16126 2007-01-30 Mark Mason <mason@broadcom.com>
16127
16128            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16129            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16130            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16131            beginning support for CEE_JMP [not quite working yet]
16132            * tramp-mips.c: LMF handling now works
16133         
16134 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16135
16136         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16137
16138         * mini.h (NULLIFY_INS): New macro.
16139
16140 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16141
16142         * mini.c: statistical profiler fix for windows, patch
16143         from Tor Lillqvist (tml@novell.com).
16144
16145 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16146         * local-propagation.c: Fix bug 80591.
16147
16148 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16149
16150         * Makefile.am: put back the --export-dynamic option as with
16151         the previous gmodule flags (thanks to Robert Jordan).
16152
16153 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16156
16157         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16158         simplify and speed up the local register allocator. Also rename some fields
16159         like iassign->vassign.
16160         
16161         * regalloc.c: Remove some functions which are no longer used since their
16162         inlined version is in mini-codegen.c.
16163         
16164         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16165
16166         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16167
16168 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16169
16170         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16171         narrowing. Fixes #80622.
16172
16173         * iltests.il: Add new regresssion test. 
16174
16175 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16176
16177         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16178         debug-debugger.c, debug-debugger.h: warning fixes.
16179         * driver.c: updated copyright year and made it fit in one line.
16180
16181 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16182
16183         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16184
16185 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16186
16187         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16188
16189         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16190
16191         * iltests.il: Add new test for bug #80507.
16192
16193 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16194
16195         * mini-arm.h: use soft-float also on vfp for now.
16196
16197 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16198
16199         * mini.c: fix some more soft-float issues.
16200
16201 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16202
16203         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16204
16205 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16206         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16207         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16208         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16209
16210 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16211
16212         * mini-arm.c: typo fix.
16213
16214 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16215
16216         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16217
16218 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16219
16220         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16221         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16222
16223         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16224
16225         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16226
16227         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16228         
16229         * inssel.brg: Fix a warning.
16230
16231         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16232
16233         * abcremoval.c ssa.c ssapre.c: Update after this change.
16234         
16235         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16236
16237         * dominators.c (df_set): Use mono_bitset_union_fast.    
16238
16239 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16240
16241         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16242         mini-codegen.c: reduce relocations and memory usage for the cpu
16243         description.
16244
16245 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16246
16247         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16248
16249         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16250         to reduce their size.
16251
16252 2007-01-19 Mark Mason <mason@broadcom.com>
16253
16254         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16255         * mini-mips.c: more configuration macros, support long conditional branches, additional
16256         asserts, fix epilog instrumentation.
16257         * mini-mips.h: use standard stack walk
16258         * cpu-mips.md: increase size of div, rem and conditional branches
16259         
16260 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16261
16262         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16263         to cpu spec data.
16264
16265 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16266
16267         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16268         (compile_method): Ditto.
16269
16270         * aot-runtime.c (decode_klass_info): Ditto.
16271
16272         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16273         needed by the code generated by inssel.brg. Also fix a warning.
16274
16275 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16276
16277         * mini.c: deal with enums that become genericinsts by
16278         being nested in a generic class (bug #79956).
16279
16280 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16281
16282         * mini.c: match the generic definition to check for
16283         private access with generic types (bug #78431).
16284
16285 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16286
16287         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16288         to make life easier for people cross-compiling that insist on not
16289         using scratchbox.
16290
16291 2007-01-17 Mark Mason <mason@broadcom.com>
16292
16293         * inssel-long.brg: patch to deal with mips missing flags
16294         * inssel-long32-mips.brg: implement overflow checks
16295         * insset-mips.brg: implement overflow checks
16296         * mini-mips.h: implement conditional exception handling
16297         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16298           Remove unused code, minor cleanups.
16299         * exceptions-mips.c: minor cleanups
16300         * mini-ops.h: add mips conditional exception ops
16301         * cpu-mips.md: add mips conditional exception ops
16302
16303         
16304 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16305
16306         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16307         to deal with mips missing of flags.
16308
16309 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16310
16311         * exceptions-ppc.c: execute fault handlers.
16312
16313 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16314
16315         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16316
16317 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16318
16319         * mini.c: handle also floating point values in initialize_array.
16320
16321 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16322
16323         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16324         array initialization and make it conditional on the intrins option.
16325
16326 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16327
16328         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16329         relocations and put the patch info names close to the enum definition.
16330
16331 2007-01-15 Mark Mason <mason@broadcom.com>
16332
16333         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16334
16335 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16336
16337         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16338
16339 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16340
16341         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16342
16343 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16344
16345         * Makefile.am: distribute the mips sources.
16346
16347 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16348
16349         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16350         directly.
16351
16352 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16353
16354         * cpu-x86.md: back out for now as this triggers other regressions.
16355
16356 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16357
16358         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16359         to eax:edx, so ecx can't get allocated to them (bug #80489).
16360
16361 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16362
16363         * mini.c, mini-exceptions.c: enabled running fault handlers
16364         (bug #80469).
16365
16366 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16367
16368         * driver.c: If nothing fail, do not use the string "failed",
16369         because it makes it very annoying to view test result logs on the
16370         web. 
16371
16372 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16373
16374         * debug-debugger.c (mono_debugger_main): Rename "main" to
16375         "main_method" to prevent a warning.
16376
16377         Remove a warning for unused field.
16378
16379 2006-12-28  Martin Baulig  <martin@ximian.com>
16380
16381         * debug-debugger.c
16382         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16383
16384 2006-12-22  Martin Baulig  <martin@ximian.com>
16385
16386         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16387         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16388         seperate `.mdb_debug_info' section, so we can access it from the
16389         debugger even if the binary is stripped.
16390
16391         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16392         from the `.mdb_debug_info' here to prevent the linker from
16393         removing that section.
16394
16395         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16396         mdb-debug-info64.s.
16397
16398 2006-12-19  Robert Jordan  <robertj@gmx.net>
16399
16400         * mini-x86: enable the code to return small structures in
16401         registers for FreeBSD as well. Fixes bug #80278.
16402         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16403
16404 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16405
16406         * mini-x86.c: align the stack when calling the profiler
16407         function instrumenting the prolog (on OSX).
16408
16409 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16410
16411         * mini.c: emit a break opcode where Debugger.Break () is called.
16412
16413 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16414
16415         * mini.c (mono_method_to_ir): Provide useful information on this
16416         assert, to prevent others from debugging like I did.
16417
16418 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16419
16420         * mini.c: enable code which was incorrectly commented
16421         (bug #80235).
16422
16423 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16424
16425         * mini-x86.c: enable on OSX, too, the code to return small
16426         structures in registers.
16427
16428 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16429
16430         * mini-x86.c: remove the use of the dynamic code manager here, too.
16431
16432 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16433
16434         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16435         mono_debugger_create_notification_function() to use
16436         mono_global_codeman_reserve () instead of a dynamic code manager.
16437
16438 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16439
16440         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16441         ves_array_element_address() jit icall and use a generated
16442         managed method instead (which is about 4 times faster for a rank 3
16443         array access).
16444
16445 2006-11-29  Mark Mason  <mason@broadcom.com>
16446
16447         * basic-calls.cs: additional tests for passing
16448         structures as function arguments.
16449
16450 2006-11-29  Mark Mason  <mason@broadcom.com>
16451
16452         * mini-mips.h: disable custom exception handling
16453         * mini-mips.c: throw/rethrow should use jalr to call
16454         exception stubs.  Fixed bug with passing structures
16455         by value. More support for tracing floating point
16456         functions.
16457
16458 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16459
16460         * mini.c: fixed typo in the soft-float ldind.r4 handling
16461         (bug #80086).
16462
16463 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16464
16465         * mini.c, mini.h, driver.c: added --runtime command line
16466         option to select a different runtime than the autodetected one.
16467         * jit.h: added API for embedders to initialize with a specific
16468         runtime version.
16469
16470 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16471
16472         * mini.c: handle also boxing of r4 values (bug #80024).
16473
16474 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16475
16476         * mini-ppc.c: force indirect calls until we reserve
16477         enough address space for all the generated code.
16478
16479 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16480
16481         * exceptions-arm.c: workaround bugs in the libc definition
16482         of struct ucontext.
16483
16484 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16485
16486         * inssel.brg: fixes from me and Mark Mason.
16487
16488 2006-11-23  Dick Porter  <dick@ximian.com>
16489
16490         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16491         semaphore display now we've fixed the initial value
16492
16493 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16494
16495         * inssel.brg: partially revert the last change to fix the build.
16496
16497 2006-11-21  Mark Mason  <mason@broadcom.com>
16498
16499         * inssel.brg: Add and use compare-and-branch macros to support
16500         architectures that do not have condition code registers (ie. MIPS).
16501         * *-mips.{c,brg,md}: Fix copyright statements
16502
16503 2006-11-20  Mark Mason  <mason@broadcom.com>
16504
16505         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16506         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16507         * mini.h: Added declaration for mono_print_ins()
16508         * mini-codegen.c: added ins_spec initializer for MIPS
16509         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16510         vreg to be virtual and hreg to be non-virtual.
16511         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16512         is not yet working/implemented correctly.
16513         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16514         non-static, fixup calls to print_ins() from other parts in the file.
16515
16516 2006-11-20  Mark Mason  <mason@broadcom.com>
16517
16518         * basic-calls.cs: added tests for passing structures as arguments
16519         to calls.
16520
16521 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16522
16523         * inssel-long32.brg: optimize signed division by power of two.
16524
16525 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16526
16527         * mini-arm.c: added support for interworking with thumb code
16528         (mono must be still be built using the ARM instruction encoding).
16529
16530 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16531
16532         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16533         verifier has different rules for it.   Fixes a few verifier issues
16534         in the test suite.
16535
16536         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16537         at the end, so people know what happened.
16538
16539 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16540
16541         * brach-opts.c: in optimize_exception_target() make sure we
16542         are in a catch clause (fixes bug #79871).
16543
16544 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16545
16546         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16547         more soft-float support fixes.
16548
16549 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16550
16551         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16552         that are passed half on the stack and half in registers.
16553
16554 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16555
16556         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16557         more mips integration work from Mark E Mason 
16558         <mark.e.mason@broadcom.com>.
16559
16560 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16561
16562         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16563         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16564         tramp-mips.c: added sources for the mips port, not
16565         integrated in the build yet. Contributed by
16566         Mark E Mason <mark.e.mason@broadcom.com>.
16567
16568 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16569
16570         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16571
16572 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16573
16574         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16575         put the soft-float rules in its own file since it seems to
16576         break s390 compilation.
16577
16578 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16579
16580         * mini-arm.c: fixed wrnings.
16581
16582 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16583
16584         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16585         inssel-arm.brg: ARM support for soft-float.
16586
16587 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16588
16589         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16590         loads and stores of 32 bit fp values.
16591
16592 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16593
16594         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16595
16596         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16597         works. Fixes #79852 and #79463.
16598
16599 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16600
16601         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16602         more soft-float support WIP and fixes.
16603
16604 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16605
16606         * mini-arm.c: some VFP updates.
16607
16608 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16609
16610         * mini-exceptions.c: 0 is a valid local var offset in some
16611         architectures, don't assert (bug #78508).
16612
16613 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16614
16615         * exceptions-arm.c: fixed off by one error in stack walk code.
16616
16617 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16618
16619         * mini.h, mini.c: more precise tracking of type load exceptions.
16620
16621 2006-11-03  Robert Jordan  <robertj@gmx.net>
16622
16623         * Makefile.am: [WIN32] Add monow.exe target.
16624         * driver.c: [WIN32] Don't detach the console when debugging.
16625         Fixes bug #79797.
16626         
16627 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16628
16629         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16630
16631 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16632
16633         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16634
16635         * driver.c (mini_regression): Fix --regression with AOT.
16636
16637         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16638
16639 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16640
16641         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16642
16643         * mini-sparc.h: Don't use sigaction on sparc/linux.
16644
16645         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16646
16647         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16648
16649         * mini-exceptions.c: Add proper include files for getpid ().
16650
16651 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16652
16653         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16654         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16655         method.
16656
16657         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16658         name cache to reduce its size.
16659
16660         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16661
16662 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16663
16664         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16665         the mono_lmf TLS variable.
16666
16667         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16668         trampoline lmf frames.  
16669
16670         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16671
16672 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16673
16674         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16675         the mono_lmf TLS variable.
16676
16677         * mini-exceptions.c: Access the LMF structure through accessors.
16678
16679         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16680         variable instead of in jit_tls->lmf.
16681
16682         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16683         
16684         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16685         trampoline lmf frames.
16686
16687         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16688
16689 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16690
16691        * mini.c trace.c mini-x86.c: Revert these too.
16692         
16693        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16694        signature change.
16695
16696 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16697
16698         * genmdesc.c: removed now dead code.
16699
16700 2006-10-09  Robert Jordan <robertj@gmx.net>
16701
16702         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16703
16704 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16705
16706         * mini.h: do not leave gaps in the opcode values.
16707
16708 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16709
16710         * jit-icalls.h: flag functions as internal here, too.
16711
16712 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16713
16714         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16715         functions with the internal attribute.
16716
16717 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16718
16719         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16720
16721 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16722
16723         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16724         for soft-float.
16725
16726 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16727
16728         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16729         tail calls as on other platforms.
16730
16731         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16732
16733         * iltests.il: Add a few tailcall tests.
16734
16735 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16736
16737         * driver.c: fix loop for old compilers (bug #79521).
16738
16739 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16740
16741         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16742
16743         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16744
16745         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16746         metadata without any code.
16747
16748         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16749         more precise debugging information using gdb.
16750
16751 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16752
16753         * inssel-ia64.brg: Make the helper methods static.
16754
16755 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16756
16757         * inssel-x86.brg: make the helper methods static.
16758
16759 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16760
16761         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16762
16763 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16764
16765         * mini.c: updates for monoburg changes.
16766         * inssel.brg: make a few helper functions static as they should.
16767
16768 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16769
16770         * Makefile.am: Move mini-codegen.c to common_sources.
16771
16772 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16773
16774         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16775         instructions.
16776         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16777         mini-ppc.h: port to use the common local register allocator.
16778
16779 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16780
16781         * mini.h: Remove the comment too then.
16782
16783 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16784
16785         * mini.h: put back backend.data which is to be used shortly and
16786         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16787         pointers on 4 byte boundaries it'd have much bigger issues running
16788         and you can ifdef it out anyway.
16789
16790 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16791
16792         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16793         MonoInst size by 4 bytes on 64 bit machines.
16794
16795 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16796
16797         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16798         replacement with more meaningful field names. Arch maintainers, please
16799         check the assigned names are good enough for your arch.
16800
16801 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16802
16803         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16804         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16805
16806 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16807
16808         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16809         relocations and memory requirements, put the optimization flags
16810         definitions in their own file.
16811
16812 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16813
16814         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16815
16816         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16817
16818 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16819
16820         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16821
16822 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16823
16824         * inssel.brg: use the correct function to get the size of an item
16825         in an array, given an element class.
16826         * aot-compiler.c: do not access class->class_size directly.
16827
16828 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16829
16830         * mini.h, debug-mini.c: added a debugging function to print
16831         info about local variables and arguments in a jitted method.
16832
16833 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16834
16835         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16836
16837         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16838
16839 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16840
16841         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16842         inner and outer loops when passing vtypes.
16843
16844 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16845
16846         * mini-ppc.c: take into account the cpu errata for cache flushing
16847         which caused some random errors (bug #79381).
16848
16849 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16850
16851         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16852         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16853
16854 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16855
16856         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16857         loaded.
16858
16859         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16860         freebsd ports tree.
16861
16862         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16863         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16864
16865         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16866         displacement.
16867
16868 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16869
16870         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16871
16872 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16873
16874         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16875         macro does not have to be changed during debugging.
16876
16877         * 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>.
16878
16879         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16880
16881         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16882         
16883         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16884         MONO_ARCH_NO_EMULATE_MUL is defined.
16885
16886         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16887
16888         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16889
16890         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16891
16892         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16893         
16894 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16895
16896         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16897         stuff to mini-exceptions.c where it is used.
16898
16899         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16900         setup code, the real one is in mini-exceptions.c.
16901
16902         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16903         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16904         some changes from the freebsd ports tree.
16905
16906         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16907         constants.
16908         
16909         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16910
16911 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16912
16913         * mini.c: on Linux, check for /proc to be mounted
16914         (bug# 79351, novell bug#201204).
16915
16916 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16917
16918         * mini.c: handle cases where pthread_attr_getstack() behaves
16919         incorrectly (bug #78096).
16920
16921 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16922
16923         * mini-arm.c: support larger stack frames (bug #79272).
16924
16925 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16926
16927         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16928
16929         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16930         tokens.
16931
16932         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16933         mono_class_from_name () to find a class from its name.
16934
16935         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16936
16937 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16938
16939         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16940
16941 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16942
16943         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16944
16945 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16946
16947         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16948         callinfo->trampoline.
16949
16950         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16951         fixes #79271.
16952         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16953         future.
16954
16955 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16956
16957         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16958
16959 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16960
16961         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16962         stats.method_trampolines, it is already done by the generic trampoline code.
16963
16964         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16965         
16966 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16967
16968         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16969
16970         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16971
16972         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16973
16974         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16975         
16976         * mini.c (print_jit_stats): Print new stats.
16977
16978         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16979
16980 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16981
16982         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16983         Address on two dimensional arrays. Fixes #78729.
16984
16985         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16986
16987         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16988         a method.
16989
16990         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16991
16992         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16993         #79130.
16994         
16995         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16996         a race condition.
16997         (mini_get_ldelema_ins): Ditto.
16998
16999 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17002         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17003         Fixes #79213.
17004
17005 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17006
17007         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17008         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17009
17010         * exceptions-s390x.c: Cosmetic change.
17011
17012         * tramp-s390.c: Fix warning.
17013
17014         * cpu-s390.md: Correct length of mul_imm.
17015
17016 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17017
17018         * aot-compiler.c: added binary writer with ELF backend
17019         implementation (only on Linux/x86 for now).
17020
17021 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17022
17023         * Makefile.am: Don't run net 2.0 AOT tests.
17024
17025         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17026         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17027
17028         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17029
17030 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17031
17032         * aot-compiler.c: simplified and refactored the asm-writing code
17033         to allow different backends.
17034
17035 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17036
17037         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17038
17039         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17040         little. Share patches of type TYPE_FROM_HANDLE as well.
17041
17042         * mini.c (mono_patch_info_equal): New helper function.
17043         (mono_patch_info_hash): Ditto.
17044
17045         * aot-compiler.c (emit_method_code): Fix s390 build.
17046
17047         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17048         is not handled because it is stored as a flag and not as a type ctor. Fixes
17049         #79016.
17050
17051 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17052
17053         * aot-compiler.c: Fix computation of GOT slot statistics.
17054         
17055         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17056         Also remove support for not PIC AOT.
17057
17058         * mini.h: Bump AOT file format version.
17059
17060         * objects.cs: Add a test for #78990.
17061
17062         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17063         (peter.dettman@iinet.net.au). Fixes #79087.
17064
17065         * basic-long.cs: Add a test for the above.
17066
17067 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17068
17069         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17070         
17071         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17072         code somewhat.
17073
17074 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17075
17076         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17077         exceptions.
17078
17079 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17080
17081         * mini.c: Don't verify COM proxy invoke calls
17082         
17083
17084 2006-08-10  Dick Porter  <dick@ximian.com>
17085
17086         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17087         which process is holding semaphores locked.
17088
17089 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17090
17091         * mini-ia64.c mini-amd64.c: Fix #79027.
17092
17093         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17094
17095         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17096
17097         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17098         implicit arguments in a vararg call. Fixes #79027.
17099
17100 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17101
17102         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17103         (mono_get_array_new_va_signature): Ditto.
17104
17105 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * aot-runtime.c: Call init_plt lazily.
17108
17109         * inssel-long.brg: Fix unsigned long->int conversion.
17110
17111         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17112
17113         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17114         that most data is now in the .rss/.data section.
17115
17116 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17117
17118         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17119
17120         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17121
17122         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17123
17124         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17125
17126         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17127         virtual call. Fixes #79010.
17128
17129         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17130         and use the result as the this argument in the real call.
17131
17132         * generics.2.cs: Add a new test for #79010.
17133         
17134 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17135
17136         * mini-x86.c: Fix a warning.
17137
17138         * aot-compiler.c: Add a bunch of statistics.
17139
17140         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17141
17142 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17143
17144         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17145
17146 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17147
17148         * 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>.
17149
17150 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17151
17152         * mini.c (mono_method_to_ir): Obtain the original method in the
17153         CIL stream and use this to perform validation.
17154
17155         Fixed: #78816
17156
17157 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17158
17159         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17160         (mono_arch_call_opcode): Ditto.
17161
17162         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17163         #78826.
17164
17165         * mini.c (mono_patch_info_dup_mp): New helper function.
17166         
17167         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17168         compilation. Fixes #78827.
17169
17170 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17171
17172         * declsec.c: Use original security informations for
17173           MONO_WRAPPER_MANAGED_TO_MANAGED.
17174
17175 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17176
17177         * mini.c: Allow Com Interop methods/classes and
17178         don't verify COM wrapper calls
17179         
17180
17181 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17182
17183         * inssel-long32.brg: Fix long->i4 checked conversion.
17184
17185         * exceptions.cs: Add a test for the above.
17186
17187 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17188
17189         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17190
17191         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17192         leaks.
17193
17194         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17195         #78775.
17196
17197 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17198
17199         * mini.c: Fix solaris/x86 exception handling.
17200
17201         * Makefile.am: Get rid of $(ICU_LIBS).
17202
17203 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17204
17205         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17206         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17207         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17208
17209         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17210
17211         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17212         this function causes a SIGSEGV.
17213
17214 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17215
17216         * mini.c: Remove unused solaris/x86 includes.
17217
17218 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17219
17220         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17221
17222 2006-06-20  Jb Evain  <jbevain@gmail.com>
17223
17224         * cpu-g4.md: fix max length of start_handler instruction.
17225
17226 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17227         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17228
17229 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17230         * ssa.c: Fixed bug 78653 for SSA based deadce.
17231         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17232         MonoInst.flags, used in SSA based deadce.
17233         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17234         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17235
17236 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17237
17238         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17239         it can end up using non executable memory on ppc64 systems
17240         running ppc32 userspace (fix from Johannes Berg).
17241
17242 2006-06-14  Dick Porter  <dick@ximian.com>
17243
17244         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17245         4.1.1
17246
17247 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17248         * mini.c: Made so that inline is locally disabled if it would
17249         trigger a .cctor, because too many apps depend on this behavior
17250         (which seems to be also the one of the MS CLR).
17251
17252 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17253
17254         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17255         No idea why this worked before.
17256
17257         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17258         which branch to outer exception clauses since they could skip the
17259         inner finally clauses. Fixes #78633.
17260
17261         * exceptions.cs: Add a test for the above.
17262
17263         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17264         Fixes #78629.
17265
17266         * iltests.il: Add a test for the above.
17267
17268 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17269
17270         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17271         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17272
17273         * iltests.il: Add a test for the above.
17274
17275 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17276
17277         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17278         
17279         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17280         methods as instrinsics.
17281
17282 2006-06-09  Wade Berrier <wberrier@novell.com>
17283
17284         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17285         (simple-cee-ops.h ssapre-mini-ops.h)
17286
17287 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17288
17289         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17290         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17291         instruction).
17292         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17293         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17294
17295 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17296
17297         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17298
17299 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17300
17301         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17302         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17303         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17304         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17305         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17306         of opcodes, so that bug 78549 should not happen again.
17307         * ssapre.c: Updated to use the renamed files.
17308
17309 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17310
17311         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17312         in OP_ATOMIC_EXCHANGE_I4.
17313
17314 2006-06-07  Wade Berrier <wberrier@novell.com>
17315
17316         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17317         in mono_debugger_create_notification_function)
17318
17319 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17320
17321         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17322         
17323         * mini.c (type_from_stack_type): Disable some changes which do not
17324         seem to work.
17325
17326         * driver.c: Reenable opts.
17327
17328         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17329         of the evaluation stack.
17330         
17331         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17332         evaluation stack trace at entry to the bblock.
17333
17334         * mini.c (merge_stacks): New function to perform verification of stack merges.
17335         Turned off by default.
17336
17337         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17338         STACK_MP.
17339         
17340 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17341
17342         * local-propagation.c: Fixed bug 78549.
17343
17344 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17345
17346         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17347
17348 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17349
17350         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17351         tramp-arm.c, tramp-ia64.c
17352         (mono_debugger_create_notification_function): Update signature to
17353         new signature and use new protocol for creating the notification
17354         function.  
17355
17356         Should fix the build.
17357
17358 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17359
17360         * exceptions-ppc.c (mono_jit_walk_stack)
17361         (ves_icall_get_frame_info): Fix the build
17362
17363 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17364
17365         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17366
17367 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17368
17369         * il2tests.2.il: New file for generics CIL tests.  Add test for
17370         #78019.
17371         * Makefile.am: Update.
17372
17373         Fix #78019
17374         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17375         to nullable types.
17376
17377 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17378
17379         * aliasing.c: Fixed bug 78311.
17380
17381 2006-05-29  Martin Baulig  <martin@ximian.com>
17382
17383         * mini-exceptions.c (mono_find_jit_info): When computing the
17384         native offset, check whether we're actually inside the method's
17385         code; call mono_debug_print_stack_frame() to format the frame.
17386         (ves_icall_System_Exception_get_trace): Call
17387         mono_debug_print_stack_frame() to format the stack frame.
17388         (ves_icall_get_trace): Update to the new debugging API.
17389         (mono_jit_walk_stack_from_ctx): Likewise.
17390         (ves_icall_get_frame_info): Likewise.
17391
17392         * mini.c (get_method_from_ip): Use the new debugging API.
17393         (mono_print_method_from_ip): Likewise.
17394
17395         * exceptions-ppc.c
17396         (mono_jit_walk_stack): Use the new debugging API.
17397         (ves_icall_get_frame_info): Likewise.   
17398
17399 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17400
17401         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17402
17403 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17404
17405         * mini.c: Added "limitator" to inline for debugging.
17406
17407 2006-05-24  Martin Baulig  <martin@ximian.com>
17408
17409         * debug-debugger.c (mono_debugger_init): Create a private,
17410         malloc()-based code manager for the notification function and
17411         intentionally leak it on exit.  This fixes the crash-on-exit race
17412         condition.
17413
17414         * tramp-amd64.c
17415         (mono_debugger_create_notification_function): Added
17416         `MonoCodeManager *' argument.
17417
17418         * tramp-x86.c
17419         (mono_debugger_create_notification_function): Added
17420         `MonoCodeManager *' argument.
17421
17422 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17423
17424         * aliasing.c: Fixed 64 bit issue.
17425         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17426         default since all known bugs are fixed (one more time!).
17427
17428 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17429
17430         * mini.c: write barrier support.
17431
17432 2006-05-23  Martin Baulig  <martin@ximian.com>
17433
17434         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17435         check at the top of the file.
17436
17437 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17438
17439         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17440         reverting changes without reason and without changelog entries.
17441
17442 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17443
17444         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17445         to a few opcodes. Fixes #78439.
17446
17447         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17448         consistency with other archs.
17449
17450         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17451
17452 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17453
17454         * debug-debugger.c: fix the build.
17455
17456 2006-05-17  Martin Baulig  <martin@ximian.com>
17457
17458         * debug-debugger.c
17459         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17460         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17461         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17462         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17463
17464 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17465
17466         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17467
17468 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17469
17470         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17471         MONO_TYPE_GENERICINST.
17472         
17473         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17474         MONO_TYPE_GENERICINST.
17475
17476 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17477
17478         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17479         #78325.
17480
17481 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17482
17483         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17484         mempool.
17485         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17486
17487 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17488
17489         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17490         mono_trace_cleanup ().
17491
17492         * iltests.il: Fix problem with the newly added test.
17493
17494         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17495         due to register constraints, free up the previous hreg. Fixes #78314.
17496
17497         * iltests.il: Add new test for #78314.  
17498
17499         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17500         Interlocked.Add. Fixes #78312.
17501
17502         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17503         
17504 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17505
17506         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17507
17508 2006-05-05  Martin Baulig  <martin@ximian.com>
17509
17510         * debug-mini.c (mono_debug_open_block): New method.
17511
17512         * mini-amd64.c
17513         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17514         the beginning of each basic block.
17515
17516         * mini-x86.c
17517         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17518         the beginning of each basic block.
17519
17520 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17521
17522         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17523         default until I understand why they break the build on amd64.
17524
17525 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17526
17527         * mini.c (mini_cleanup): Call mono_cleanup ().
17528
17529         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17530         errors.
17531
17532 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17533
17534         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17535         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17536         default since all known bugs are fixed, and I cannot reproduce bug
17537         77944... I'm asking Matt Hargett to test again after this commit.
17538
17539 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17540
17541         * mini-codegen.c: Fixed typo that thrashed inline.
17542
17543 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17544
17545         * dominators.c (compute_dominators): Avoid using a worklist since
17546         it is not correct in some cases. Instead, iterate over all bblocks as
17547         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17548
17549 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17550
17551         * mini.c (mono_jit_compile_method_inner): Use
17552         mono_prepare_exception_from_error that resets the value
17553         internally.
17554
17555 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17556
17557         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17558         
17559 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17560
17561         * aliasing.c: Fixed bug 78210.
17562
17563 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17564
17565         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17566         default until all their problems (or the ones they trigger) are fixed.
17567
17568 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17569
17570         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17571         
17572         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17573         as loaded only after resolving patches since that could invoke the same method.
17574
17575         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17576
17577         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17578         functions.
17579
17580         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17581         AOT loader.
17582
17583         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17584         stack.
17585
17586         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17587         made from AOT code through the PLT table.
17588
17589         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17590         holding the plt offset when a call is made to the aot plt trampoline.
17591         
17592 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17593
17594         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17595         amd64 AOT support.
17596
17597         * Makefile.am (common_sources): Fix build breakage.
17598
17599         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17600         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17601         intra-assembly calls if possible.
17602         
17603         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17604
17605         * mini-trampolines.c: Handle PLT entries.
17606
17607         * mini.c: Avoid creating a GOT var for calls.
17608
17609         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17610         from mscorlib code.
17611
17612         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17613         from mscorlib code.
17614
17615         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17616         AOT code.       
17617
17618         * mini.h: Bump AOT file format version.
17619         
17620         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17621         covers more cases.
17622
17623 2006-04-25  Martin Baulig  <martin@ximian.com>
17624
17625         * driver.c: Disable copyprop, consprop and inline when running
17626         inside the debugger.
17627
17628 2006-04-25  Martin Baulig  <martin@ximian.com>
17629
17630         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17631         with `get_current_thread' and added `detach'.
17632         (MonoDebuggerMetadataInfo): Added `thread_size',
17633         `thread_tid_offset', `thread_stack_ptr_offset' and
17634         `thread_end_stack_offset'.
17635
17636 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17637
17638         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17639         aot-runtime.c.
17640
17641         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17642         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17643
17644         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17645
17646         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17647
17648         * aot.c: Add support for ADJUSTED_IID.  
17649
17650 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17651
17652         * aot.c (emit_method_order): Don't align method_order_end.
17653
17654         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17655         the interface ID changes.
17656
17657 2006-04-21  Dick Porter  <dick@ximian.com>
17658
17659         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17660         cleaning up a thread.  Fixes the new part of bug 77470.
17661
17662 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17663
17664         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17665         to managed wrapper.
17666                      
17667 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17668
17669         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17670         
17671         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17672         SIGSEGV. Fixes #78072.
17673
17674         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17675         unregister our SIGABRT handler.
17676
17677 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17678
17679         * mini.c: Disabled inline where it can alter the call stack in a
17680         way visible from managed code.
17681         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17682         default.
17683
17684 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17685
17686         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17687         on other platforms. Fixes #78089.
17688
17689 2006-04-13  Martin Baulig  <martin@ximian.com>
17690
17691         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17692         determine whether we're inside the debugger.
17693
17694         * debug-debugger.h
17695         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17696
17697 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17698
17699         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17700         handler clauses. Fixes #78024.
17701
17702         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17703         in the CALL_MEMBASE opcodes. Fixes #78088.
17704         (mono_arch_get_vcall_slot_addr): Ditto.
17705
17706 2006-04-10  Martin Baulig  <martin@ximian.com>
17707
17708         * debug-debugger.c: The thread handling code has now been moved
17709         into ../metadata/threads.c.
17710
17711 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17712
17713         * driver.c (mono_main): Fix --with-gc=none build.
17714
17715         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17716         (mono_spillvar_offset_float): Ditto.
17717         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17718         hreg, not when its !global, since on ia64, there is a third category: stacked
17719         registers.      
17720
17721 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17722
17723         * mini.c: set MonoInst->klass for load field address and a few other
17724         places.
17725
17726 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17727
17728         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17729
17730 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17731
17732         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17733         the branch opt changes.
17734
17735 2006-04-06  Dick Porter  <dick@ximian.com>
17736
17737         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17738         
17739         * wapihandles.c (mini_wapi_seminfo): 
17740         * driver.c (mono_main): Add semaphore info option
17741
17742 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17743
17744         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17745         branch optimization changes. Fixes #78009.
17746
17747 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17748
17749         * mini.c: ignore accessibility of methods in managed->native wrappers.
17750
17751 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17752
17753         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17754         
17755         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17756
17757 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17758
17759         * mini.c: Modify the branch optimizations to preserve the invariant that
17760         the entries inside the in_bb and out_bb arrays are unique.
17761         (mono_unlink_bblock): Avoid creation of new arrays.
17762
17763 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17764
17765         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17766         change (#77992).
17767
17768 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17769
17770         * mini.c (optimize_branches): Remove the "optimizations" in
17771         the cbranch1/cbranch2 -> branch cases which were causing several
17772         problems in the past. Fixes #77986.
17773
17774 2006-03-31  Chris Toshok  <toshok@ximian.com>
17775
17776         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17777         default optimizations :(
17778
17779 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17780
17781         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17782         branch.
17783
17784 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17785
17786         * local-propagation.c: Added comments to structs and removed
17787         "Mono" prefixes from local tree mover types.
17788
17789 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17790
17791         * Makefile.am (arch_sources): Define this for each architecture so 
17792         libmono_la_SOURCES is defined in one place.
17793
17794 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17795
17796         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17797         from handles/.
17798
17799 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17800
17801         * driver.c: print the GC name supplied by configure.
17802
17803 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17804
17805         * local-propagation.c: Added tree mover, and moved here all the
17806         local propagation code from mini.c
17807         * mini.c: Added support for treeprop, and moved all the local
17808         propagation code to local-propagation.c
17809         * mini.h: Added support for treeprop
17810         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17811         treeprop, inline and deadce by default
17812         * Makefile.am: Added local-propagation.c
17813
17814 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17815
17816         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17817
17818 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17819
17820         * debug-debugger.c: make it compile without the Boehm GC.
17821
17822 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17823
17824         * mini.c: fixed issue with mismatch when an icall is registered
17825         with multiple names but same address.
17826
17827 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17828
17829         * declsec.c, mini-exceptions.c: use write barrier to set reference
17830         fields of managed objects.
17831
17832 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17833
17834         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17835         (can_access_internals): Fix a warning.
17836
17837         * mini.c (print_method_from_ip): Rename this to 
17838         mono_print_method_from_ip so it gets exported.
17839
17840         * trace.c: Deal with strings inside StringBuilder's containing garbage
17841         and fix memory leaks. Fixes #77848.
17842
17843 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17844
17845         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17846         fixes #77787.
17847
17848 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17849         
17850         * mini-s390.c: Remove OP_X86_TEST_NULL.
17851
17852 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17853
17854         * mini.c: use the correct GetHashCode() for the moving collector.
17855
17856 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17857
17858         * liveness.c: Regalloc spill cost tuning.
17859
17860 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17861         
17862         * mini-s390x.h: Correct S390_LONG macro.
17863
17864         * mini-s390x.c: Cleanup unused code.
17865
17866 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17867
17868         * jit-icalls.h: New file.
17869
17870         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17871         icalls and include that instead of including jit-icalls.c.
17872
17873         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17874         OP_X86 opcodes.
17875
17876 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17877
17878         * mini.c: when checking for member accessibility, also check for
17879         friend assemblies and for explicit interface implementations.
17880
17881 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17882
17883         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17884
17885         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17886
17887         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17888         common cases are done first.    
17889
17890         * mini-ops.h: Only define platform specific opcodes on the given platform.
17891
17892         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17893         branch.
17894         
17895 2006-03-14  Martin Baulig  <martin@ximian.com>
17896
17897         Revert Paolo's change from r57348:
17898
17899         * mini.h: don't use gboolean for bitfields.
17900         * mini.c: verifier changes for fields and methods accessibility.
17901
17902 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17903
17904         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17905
17906         * mini-s390x.c: Fix conv_r_un.
17907
17908         * cpu-s390, cpu-s390x.md: Fix lengths.
17909
17910 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17911
17912         * mini.c: nested types have access to all the nesting
17913         levels, not just the enclosing types.
17914
17915 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17916
17917         * mini.c: added a few more verification checks.
17918
17919 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17920
17921         * liveness.c: Merge optimizations from the linear-il branch.
17922
17923 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17924
17925         * mini-ia64.c (emit_call): Add a comment.
17926
17927         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17928
17929         * tramp-ia64.c: Fix some warnings.
17930
17931 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17932
17933         * mini.h: don't use gboolean for bitfields.
17934         * mini.c: verifier changes for fields and methods accessibility.
17935
17936 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17937
17938         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17939         lazy icall wrapper changes.
17940
17941         * dominators.c: Replace all the dominator algorithms with faster
17942         ones from the linear-il branch.
17943
17944         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17945         the mempool.
17946
17947         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17948         common cases are done first.
17949
17950         * mini-amd64.c: Fix some warnings.
17951
17952         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17953         from the mempool.
17954
17955         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17956         added code.
17957
17958         * mini.h: Add a missing prototype.
17959
17960 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17961
17962         * mini.c: Compile icall wrappers lazily.
17963
17964         * mini-codegen.c: Use printf instead of g_print since its much faster.
17965
17966         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17967         function.
17968
17969         * mini.c (optimize_branches): Cache the negative result from 
17970         remove_block_if_useless ().
17971
17972         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17973         Also fix some bblock linking issues.
17974
17975         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17976         assembly files.
17977
17978         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17979
17980         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17981         accessed fields first, for better cache behavior.
17982         
17983 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17984
17985         * mini.c: speedup IList<T> array accesses.
17986
17987 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17988
17989         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17990         inline_costs counter. Fixes #77190.
17991
17992 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17993
17994         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17995         trace messages. Fixes #77706.
17996
17997 2006-03-04  Martin Baulig  <martin@ximian.com>
17998
17999         * tramp-amd64.c, tramp-x86.c
18000         (mono_debugger_create_notification_function): Use
18001         mono_global_codeman_reserve() to allocate a buffer at runtime and
18002         return it.
18003
18004         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18005
18006         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18007         notification function at runtime and then call `initialize' in the
18008         `MONO_DEBUGGER__debugger_info' vtable.
18009
18010 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18011
18012         * iltests.il: Fix a visibility problem.
18013
18014 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18015
18016         * driver.c, mini.c: add hooks for the counters API.
18017
18018 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18019
18020         * driver.c: show disabled options.
18021
18022 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18023
18024         * linear-scan.c: always use cost-driven selection.
18025
18026 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18027
18028         * jit-icalls.c (helper_compile_generic_method): Revert change from
18029         2006-02-24.
18030
18031 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18032
18033         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18034
18035 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18036
18037         * inssel.brg: style fixes, mostly to force the updated monoburg
18038         to run for people using svn.
18039
18040 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18041
18042         * mini.c: match monoburg changes.
18043
18044 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18045
18046         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18047         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18048         declaration in the header file.
18049
18050 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18051
18052         * helpers.c: reduce relocations and mem usage.
18053
18054 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18055
18056         * mini.h, mini-codegen.c: disable logging features if
18057         requested by configure.
18058
18059 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18060
18061         * mini.c: tiny verifier changes.
18062
18063 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18064
18065         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18066         cpu-pentium.md: stack alignment changes for osx/x86,
18067         partially from Geoff Norton <gnorton@customerdna.com>.
18068
18069 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18070
18071         * jit-icalls.c (helper_compile_generic_method): Update to changes
18072         in metadata/class.c.
18073
18074 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18075         
18076         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18077         
18078         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18079         interface calls with large offsets.
18080
18081 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18082
18083         * jit-icalls.c (helper_compile_generic_method): Document the
18084         special-case we depend on so that we can inflate the method twice
18085         with the same context with no bad side-effects.
18086
18087 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18088
18089         * mini-x86.c, mini-amd64.c: fix for case when xen support
18090         is disabled.
18091
18092 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18093
18094         * mini-x86.c, mini-amd64.c: generate code to access tls items
18095         in a faster way for Xen systems.
18096
18097 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18098
18099         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18100         updates and compilation fixes for the OSX/x86 port, mostly from
18101         Geoff Norton <gnorton@customerdna.com>.
18102
18103 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18104
18105         * inssel.brg: faster interface call implementation
18106         to sync with the interface_offsets MonoVTable changes.
18107
18108 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18109
18110         * mini.c: more verification checks.
18111
18112 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18113
18114         * mini.c: added a few more verification checks.
18115
18116 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18117
18118         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18119         facility on the processor and use it if available.
18120
18121 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18122
18123         * driver.c, aot.c, mini.c: throw exception if the IL code is
18124         invalid or unverifiable.
18125
18126 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18127
18128         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18129         m.StructField.
18130
18131 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18132
18133         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18134
18135 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18136
18137         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18138         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18139         handling of instantiated generic valuetypes.
18140
18141 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18142
18143         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18144         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18145         instead.
18146
18147         * generics.2.cs: Revert the nullable reftypes tests.
18148
18149 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18150
18151         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18152         using __builtin_frame_address (1) as it doesn't work in the presence
18153         of optimizations. Hopefully fixes #77273.
18154
18155         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18156         -> generics.cs change as it doesn't work with some automake versions.
18157
18158 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18159
18160         * mini.c: handle systems that sue a different way to
18161         retrieve the stack address of the current thread.
18162
18163 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18164
18165         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18166         it specially in the makefile.
18167
18168         * generics.2.cs: Add tests for nullable reference types.
18169
18170 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18171
18172         * mini.c: always handle the case when mono_jit_init()
18173         is called in a thread different from the main thread,
18174         confusing libgc (bug #77309).
18175
18176 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18177
18178         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18179
18180 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18181
18182         * mini.c: change optimize_branches () to use a single loop
18183         and introduce a new optimization to simplify some range checks.
18184
18185 2006-02-03  Martin Baulig  <martin@ximian.com>
18186
18187         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18188         and merged with debugger_thread_manager_add_thread().
18189         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18190         inform the debugger about the main thread.
18191
18192 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18193
18194         * basic.cs: Add test for div.un/rem.un constant folding.
18195
18196 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18197
18198         * cpu-s390x.md: correct int_xor_imm length
18199
18200 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18201
18202         * generics.2.cs: New test for #77442.
18203
18204         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18205         #77442.
18206
18207 2006-02-02  Martin Baulig  <martin@ximian.com>
18208
18209         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18210         <mono/metadata/mono-debug-debugger.h>   
18211
18212         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18213
18214 2006-02-02  Martin Baulig  <martin@ximian.com>
18215
18216         * debug-debugger.h: New header file for debug-debugger.c.
18217
18218         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18219         function is a separate thread anymore; add support for attaching.
18220
18221 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18222
18223         * tramp-x86.c: Fix a warning.
18224
18225 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18226
18227         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18228         on very large methods.
18229
18230         * aot.c (load_patch_info): Fix a warning.
18231
18232 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18233
18234         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18235         mini-ops.h: alu membase optimizations.
18236
18237 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18238
18239         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18240         to speedup StringBuilder.
18241
18242 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18243
18244         * dominators.c (mono_compute_natural_loops): Fix detection of
18245         loop body start blocks.
18246
18247         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18248
18249 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18250
18251         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18252         #75145.
18253
18254 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18255
18256         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18257
18258 2006-01-25  Martin Baulig  <martin@ximian.com>
18259
18260         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18261         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18262         started to cleanup this file a little bit.
18263
18264 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18265
18266         * mini.c: optimize a codepath frequently happening in generics code.
18267
18268 2006-01-23  Martin Baulig  <martin@ximian.com>
18269
18270         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18271
18272         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18273         functions directly.
18274
18275         * driver.c: debug-debugger.c is only available if
18276         `MONO_DEBUGGER_SUPPORTED' is defined.   
18277
18278 2006-01-23  Martin Baulig  <martin@ximian.com>
18279
18280         * debug-debugger.c: Only enable this on platforms where the Mono
18281         Debugger is working (x86 and x86_64).
18282
18283 2006-01-21  Martin Baulig  <martin@ximian.com>
18284
18285         The Mono Debugger is now using the normal `mono' instead of the
18286         `mono-debugger-mini-wrapper' when executing managed code.
18287
18288         * debug-debugger.c: New file; previously known as
18289         debugger/wrapper/wrapper.c.
18290
18291         * debug-mini.c (mono_init_debugger): Removed.
18292
18293         * driver.c (mono_main): Added new `--inside-mdb' command line
18294         argument which is used when running inside the debugger.
18295
18296 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18297
18298         * liveness.c (mono_analyze_liveness): Remove some unused data
18299         structures.
18300
18301 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18302
18303         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18304
18305 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18306
18307         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18308         depends on implementation details of monobitset.
18309
18310         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18311         Fixes #77271.
18312
18313 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18314
18315         * liveness.c: Update after monobitset changes.
18316
18317 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18318
18319         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18320
18321 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18322
18323         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18324
18325         * mini-s390x.c: Remove warning messages.
18326
18327 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18328
18329         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18330
18331 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18332
18333         * generics.2.cs: Add ldelem/stelem_any test.
18334
18335 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18336
18337         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18338
18339 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18340
18341         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18342         
18343 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18344
18345         * generics.2.cs: Reenable vtype tests.
18346
18347         * inssel-x86.brg: Remove an icorrect valuetype rule.
18348
18349 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18350
18351         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18352         initial support for OP_ABS.
18353
18354 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18355
18356         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18357
18358 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18359
18360         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18361         conversion and implement LADD/LSUB.
18362
18363         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18364         architectures.
18365
18366 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18367
18368         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18369
18370         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18371         architectures.
18372
18373 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18374
18375         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18376         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18377         (stack walk problem).
18378
18379 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18380
18381         * aot.c (mono_aot_load_method): Fix a warning.
18382
18383 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18384
18385         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18386
18387 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18388
18389         * iltests.il: Add test for #77148.
18390
18391         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18392         #77148.
18393
18394 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18395
18396         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18397
18398 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18399
18400         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18401         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18402
18403         * basic-long.cs: Add lconv-to-r4/r8 tests.
18404
18405 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18406
18407         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18408
18409         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18410         here as on other archs.
18411
18412 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18413
18414         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18415
18416 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18417
18418         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18419         
18420         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18421
18422         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18423         instrument_prolog; Add memory_barrier instruction.
18424
18425 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18426
18427         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18428
18429 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18430
18431         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18432
18433         * aliasing.c inssel.brg: Fix warnings.
18434
18435         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18436         could skip initialization of some parts of memory.
18437
18438         * mini.c mini-ia64.c: Fix warnings.
18439
18440         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18441
18442 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18443
18444         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18445         a crash seen on sparc.
18446
18447         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18448         
18449         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18450
18451 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18452
18453         * mini-ops.h: Add s390_backchain instruction
18454
18455         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18456
18457         * cpu-s390.md: Add s390_backchain instruction
18458
18459         * mini-s390.c: Significant ABI changes
18460
18461         * mini-s390.h: Cater for zero length structures
18462
18463 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18464
18465         * mini-s390.c: ABI fixes
18466
18467         * inssel-s390.brg: Remove debug statements
18468
18469         * cpu-s390.md: Fix length of ATOMIC_xx operations
18470
18471 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18472
18473         * basic-float.cs: Add float<->long conversion tests.
18474
18475 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18476
18477         * mini-s390.c: Fix LOCALLOC processing.
18478
18479         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18480
18481 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18482
18483         * iltests.il: Add tests for some opcodes not covered by the other
18484         tests.
18485
18486 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18487
18488         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18489         register loading for Tail processing; Correct trace output.
18490
18491         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18492
18493         * cpu-s390.md: Correct size of jmp instruction. 
18494
18495 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18496
18497         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18498
18499 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18500
18501         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18502           Bring s390 up to current level.
18503
18504 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18505
18506         * generics.2.cs: Disable the newly added tests as they do not work yet.
18507         
18508         * generics.2.cs: Add valuetype tests.
18509
18510 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18511
18512         * basic-long.cs: Add i4->u8 test.
18513
18514         * objects.cs: Add tests for JIT intrinsic.
18515
18516         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18517         optimizations lost by a mistake.
18518
18519 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18520
18521         * basic-long.cs: Remove a test moved to objects.cs.
18522
18523         * arrays.cs: Add more array tests.
18524
18525 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18526
18527         * arrays.cs: Add new tests for multi-dimensional arrays.
18528
18529 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18530
18531         * Makefile.am (test_sources2): Add generics.2.cs.
18532         (EXTRA_DIST): Add test_sources2.
18533
18534 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18535
18536         Support for boxing and unboxing nullable types as well as the
18537         isinst operation on nullables, per the CLI ammendment.
18538
18539         * inssel.brg (CEE_ISINST): Special case for nullable
18540
18541         * mini.c (handle_unbox_nullable): new method
18542         (handle_box): Special case for nullable types
18543         (mono_method_to_ir): Call handle_unbox_nullable in correct
18544         places.
18545
18546         * generics.2.cs: New test suite
18547
18548         * Makefile.am: Support for regression tests with generics.
18549
18550 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18551
18552         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18553         allocated to registers. Fixes #76800.
18554
18555 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18556
18557         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18558
18559 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18560
18561         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18562         of platforms.
18563
18564 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18565
18566         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18567         objects.cs.
18568
18569         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18570         
18571         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18572 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18573
18574         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18575         single precision before storing to a single precision location.
18576
18577 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18578
18579         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18580
18581 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18582
18583         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18584         correct files.
18585
18586         * basic.cs: Remove test_0_byte_compares test which was moved to
18587         objects.cs a long time ago.
18588
18589 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18590
18591         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18592
18593 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18594
18595         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18596         handlers are called.
18597
18598         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18599         throwing code.
18600
18601          * mini-ia64.c: Add support for the throw->branch exception 
18602         optimization.   
18603
18604         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18605
18606 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18607
18608         * mini.c: Enabled "fastpath" deadce :-)
18609         
18610 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18611
18612         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18613         alias analysis pass to support it.
18614         * mini.h: Likewise.
18615         * ssa.c: Likewise.
18616         * liveness.c: Likewise (liveness computation can use aliasing
18617         information to be more accurate).
18618         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18619         moreover made so that "--compile-all" uses the given optimization
18620         flags and not the default ones.
18621         * aliasing.c: Alias analysis (new file).
18622         * aliasing.h: Likewise.
18623         * Makefile.am: added "aliasing.c" and "aliasing.h".
18624         
18625 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18626
18627         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18628         OP_L opcodes.
18629
18630 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18631
18632         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18633         fp >= end_of_stack exit condition, as it is not needed, and it might
18634         become true for fp eliminated frames.
18635
18636 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18637
18638         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18639         coded offsets.
18640
18641 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18642
18643         * mini-arm.c: fixed alignment of doubles/longs to match
18644         the C ABI (bug #76635).
18645
18646 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18647
18648         * aot.c: fix compilation with --enable-minimal=aot.
18649
18650 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18651
18652         * mini-arm.c: fixed compatibility with the new
18653         floating point emulator package for compares.
18654
18655 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18656
18657         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18658
18659 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18660
18661         * mini-exceptions.c (print_stack_frame): Output to stderr.
18662         (mono_handle_native_sigsegv): Ditto.
18663
18664 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18665
18666         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18667         OP_LCONV_TO_OVF_I implementation.
18668
18669         * mini-amd64.c: Add support for the throw->branch exception 
18670         optimization.
18671
18672         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18673         when the catch clause catches a more general exception, i.e. Object.
18674
18675 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18676
18677         * cpu-ia64.md: Remove unused opcodes.
18678
18679         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18680         specific defines for architectures defining USE_SIGACTION.
18681
18682         * mini-ia64.c: Fix some warnings.
18683
18684         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18685         version seemed to skip a frame.
18686
18687 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18688
18689         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18690         only calls which are made to native code use this flag.
18691
18692 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18693
18694         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18695         varargs methods as well.
18696         
18697         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18698         which have save_lmf set. Reorganize methods prologs a bit.
18699
18700         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18701         debugger to the proper place.
18702
18703 2005-10-29  Martin Baulig  <martin@ximian.com>
18704
18705         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18706         when running inside the debugger until the debugger has support
18707         for it.
18708
18709 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18710
18711         * mini.h: Fix a warning.
18712
18713 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18714
18715         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18716         we expose publicly, this returns the string.
18717
18718 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18719
18720         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18721         with fp elimination.
18722
18723 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18724
18725         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18726         native stacktrace using the glibc 'backtrace' function if available.
18727
18728 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18729
18730         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18731
18732         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18733         handle SIGSEGVs received while in native code.
18734
18735         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18736         code, call mono_handle_native_sigsegv which will abort the runtime
18737         after printing some diagnostics, instead of converting it into a
18738         confusing NullReferenceException.
18739
18740 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18741
18742         * cpu-pentium.md: Remove unused opcodes.
18743
18744 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18745
18746         * mini-amd64.h (MonoLMF): Add rsp field.
18747
18748         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18749         the lmf too.
18750
18751 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18752
18753         * mini-codegen.c (get_register_spilling): Fix some warnings.
18754
18755 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18756
18757         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18758         elimination during exception handling. Enable fp elimination by
18759         default.
18760
18761         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18762         elimination.
18763
18764 2005-10-16  Martin Baulig  <martin@ximian.com>
18765
18766         * mini-exceptions.c
18767         (mono_debugger_run_finally): New public method for the debugger.
18768
18769 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18770
18771         * debug-mini.c (mono_debug_init_method): Fix warning.
18772
18773         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18774         the 'exname' parameter const to fix some warnings.
18775
18776 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18777
18778         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18779         introduced by the previous patch.
18780
18781 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18782
18783         * basic-float.cs: Add test for precision of float arithmetic.
18784
18785         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18786         when loading/storing single values from/to memory.
18787
18788         * mini.c (mono_jit_compile_method_with_opt): Create the function
18789         pointers in the correct domain.
18790
18791 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18792
18793         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18794         introduced by previous patch.
18795         
18796         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18797         when out_filter_idx is NULL.
18798
18799         * mini-exceptions.c: Don't run filter clauses twice during exception
18800         handling. Fixes #75755.
18801
18802 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18803
18804         * aot.c: Add support for ldflda wrappers.
18805
18806         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18807         #75902.
18808
18809 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18810
18811         * mini.c, mini.h: do not consider exception handlers blocks when
18812         setting up interface variables.
18813
18814 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18815
18816         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18817
18818 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18819
18820         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18821         causes a regression.
18822
18823         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18824
18825 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18828         of the OP_P definitions.
18829
18830         * TODO: Add a proposal for dealing with the CEE/OP mess.
18831
18832         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18833         optimizations from the x86 port.
18834
18835         * cpu-amd64.md: Ditto.
18836
18837         * basic.cs basic-long.cs: Add tests.
18838
18839 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18840
18841         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18842         Patrik Torstensson's implementation of my exception-handling
18843         optimization idea, when the exception object is not used
18844         (bug #62150).
18845
18846 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18847
18848         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18849         of the mul_imm optimizations from the old jit.
18850
18851 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18852
18853         * mini.c, liveness.c: patch by Patrik Torstensson and
18854         Zoltan Varga to improve performance in methods with
18855         exception clauses.
18856
18857 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18858
18859         * driver.c: Remove 'Globalization' entry from --version.
18860
18861 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18862
18863         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18864         there is a profiler interested in JIT events.
18865
18866         * aot.c: Load profile files produced by the AOT profiling module, and
18867         reorder methods based on the profiling info. Add a 'method_order' table
18868         to the AOT file to make mono_aot_find_jit_info work with the reordered
18869         methods.
18870
18871         * mini.h: Bump AOT file version info.
18872
18873 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18874
18875         * mini-arm.h: work around what looks like a gcc bug when optimizations
18876         are enabled.
18877
18878 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18879
18880         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18881         conditionals.  Use ...
18882         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18883
18884 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18885
18886         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18887         to determine the amount of memory to copy when passing valuetypes.
18888
18889         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18890         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18891
18892 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18893
18894         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18895         information about aot.
18896
18897 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18898
18899         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18900         macros. This will allow a deadlock debugger to easily be plugged
18901         in.
18902
18903 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18904
18905         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18906
18907 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18908
18909         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18910         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18911         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18912         ($(arch_built)) [CROSS_COMPILING]: Error out.
18913
18914 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18915
18916         * aot.c: Add support for the no_special_static flag for classes.
18917
18918 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18919
18920         * Reapply reverted patches.
18921
18922         * *: Revert r50174 as well.
18923
18924         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18925
18926 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18927
18928         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18929
18930 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18931
18932         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18933         part of the SIG_HANDLER_SIGNATURE.  
18934
18935 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18936
18937         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18938         statistics.
18939
18940         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18941         introduced by previous patch.
18942
18943 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18944
18945         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18946         saved registers too.
18947
18948         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18949         upon the information returned by get_call_info ().
18950         
18951         * mini-x86.c (add_float): Fix stack size calculation.
18952         (mono_arch_call_opcode): Rewrite this so it works based up the
18953         information returned by get_call_info ().
18954         (mono_arch_get_this_vret_args): Ditto.
18955
18956 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18957
18958         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18959         in cinfo to determine the registers which need to be used.
18960
18961 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18962
18963         * driver.c (mono_main): Add --server and --desktop flags. 
18964
18965 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18966
18967         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18968         registers as global registers.
18969
18970         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18971         longer needed with the new register allocator.
18972
18973         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18974
18975         * cpu-ia64.md: Remove unused opcodes.
18976         
18977         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18978         
18979 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18980
18981         * cpu-amd64.md: Remove unused opcodes.
18982
18983         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18984         needed with the new register allocator.
18985
18986         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18987         reg-reg moves.
18988
18989 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18990
18991         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18992
18993 2005-09-16  Martin Baulig  <martin@ximian.com>
18994
18995         * exceptions-amd64.c
18996         (throw_exception): Don't call mono_debugger_throw_exception() if
18997         we're a rethrow - see the FIXME in the code.
18998
18999 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19000
19001         * mini.c (mono_init_exceptions): This only works on some architectures.
19002         
19003 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19004
19005         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19006         on ia64.
19007
19008         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19009
19010         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19011         now in mini-exceptions.c.
19012
19013 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19014
19015         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19016         now in mini-exceptions.c.
19017
19018 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19019
19020         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19021         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19022
19023         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19024         code into mini-exceptions.c. Add some assertions to it.
19025
19026 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19027
19028         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19029         (<software@solmersa.com>). Fix as errors on windows.
19030
19031 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19032
19033         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19034         method info into the LMF.
19035
19036 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19037         
19038         * mini-ia64.c: Add proper unwind info for method epilogs.
19039
19040         * exceptions-ia64.c: Add some code to help debugging.
19041         
19042         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19043
19044         * mini-exceptions.c: Fix warning.
19045
19046 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19047
19048         * mini.c: Really fix build.
19049
19050         * mini-x86.c mini-amd64.c: Fix build.
19051
19052 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19053
19054         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19055
19056         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19057         some Interlocked methods as intrinsics.
19058
19059         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19060         for Thread methods as well.
19061
19062         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19063
19064         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19065
19066         * mini-ia64.c mini-x86.c mini-amd64.c 
19067         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19068         OP_MEMORY_BARRIER.
19069         
19070         * mini.c (mono_init_exceptions): Fix build breakage.
19071
19072 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19073
19074         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19075         of instructions. Use the new ia64_unw_op macros for emitting unwind
19076         info.
19077
19078         * mini.c (mono_init_exceptions): Initialize exception handling
19079         related trampolines at startup.
19080
19081 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19082
19083         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19084
19085 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19086
19087         * mini.c: Handle type loading errors gracefully during compilation and
19088         throw the appropriate exception.
19089
19090 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19091
19092         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19093         for the mono binary.
19094
19095 2005-09-09  Martin Baulig  <martin@ximian.com>
19096
19097         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19098         the release.
19099
19100 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19101
19102         * mini-arm.h: use emulation for conv.r.un for the release.
19103
19104 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19105
19106         * mini-arm.c, objects.cs: more fixes and tests for them.
19107
19108 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19109
19110         * mini-arm.c: align structures to at least 4 bytes to be able
19111         to keep our current optimized memcpy.
19112
19113 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19114
19115         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19116
19117 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19118
19119         * mini.c: ignore SIGPIPE.
19120
19121 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19122
19123         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19124
19125         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19126
19127 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19128
19129         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19130
19131 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19132
19133         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19134         exception handling support.
19135         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19136         patch by Brian Koropoff <briank@marakicorp.com>).
19137
19138 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19139
19140         * mini.c: revert another 'optimization' which breaks when
19141         items on the eval stack need to be saved at a basic block end
19142         (bug #75940).
19143
19144 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19145
19146         * jit-icalls.c: for arrays, ensure we always provide
19147         lower bounds.
19148
19149 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19150
19151         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19152         
19153         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19154
19155 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19156
19157         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19158         arguments in their original register.
19159
19160 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19161
19162         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19163         memset/memcpy.
19164
19165         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19166         when ssapre is enabled.
19167
19168         * inssel-long.brg: Fix bug in previous patch.
19169
19170         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19171         multiplication by a constant.
19172
19173 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19174
19175         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19176         icc.
19177
19178         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19179         saving registers.
19180
19181 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19182
19183         * inssel-arm.brg: apply changes tested by Brian Koropoff
19184         <briank@marakicorp.com>.
19185
19186 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19187
19188         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19189         
19190 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19191
19192         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19193         to the same register if dreg is just a base register.
19194         (print_ins): Improve printing of membase opcodes.
19195
19196         * inssel-x86.brg: Add optimized ldind(reg) rules.
19197
19198         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19199
19200 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19201
19202         * mini.c: when running under valgrind, set the stack bottom for
19203         the GC at the actual approximate stack for the app (fixes running
19204         mono with valgrind).
19205
19206 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19207
19208         * mini.c: do no break at the first valuetype to init found
19209         (fixes bug #75791).
19210
19211 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19212
19213         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19214
19215 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19216
19217         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19218
19219 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19220
19221         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19222
19223 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19224
19225         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19226
19227         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19228         code.
19229
19230         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19231         code.
19232
19233         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19234         methods.
19235
19236 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19237
19238         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19239
19240 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19241
19242         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19243         in the tail recursion optimization.
19244
19245         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19246         debug info into the assembly file.
19247
19248         * iltests.il: Add test for filter regions.
19249
19250         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19251         initial stack of filter regions. Fixes #75755.
19252
19253 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19254
19255         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19256         stack requirements.
19257
19258 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19259
19260         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19261         the check for an already compiled method on non-ia64 platforms.
19262         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19263         proper domain.
19264
19265         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19266
19267         * inssel-x86.brg: Add some optimized call rules.
19268
19269 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19270
19271         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19272         method here.
19273
19274         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19275         mono_arch_patch_delegate_trampoline.
19276
19277         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19278
19279         * mini-trampolines.c: Fix build.
19280
19281         * mini-amd64.h: Add delegate trampolines.
19282
19283         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19284
19285         * inssel-amd64.brg: Add optimized call rules.
19286         
19287         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19288
19289         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19290
19291 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19292
19293         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19294         change.
19295
19296         * mini-ia64.c: Remove LMF fixmes.
19297
19298         * mini-ia64.h: Remove most fields from LMF.
19299
19300         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19301
19302         * mini-trampolines.c: Add support for IA64 function descriptors.
19303
19304         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19305         for IA64 function descriptors.
19306
19307 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19308
19309         * tramp-arm.c: patch the vtable for virtual calls. Added
19310         support code to register/unregister the LMF.
19311         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19312         more LMF work.
19313
19314 2005-08-19  Dick Porter  <dick@ximian.com>
19315
19316         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19317         bit value if needed.
19318
19319 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19320
19321         * mini.c (mini_get_method): Move handling of wrapper data here.
19322
19323         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19324
19325         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19326         virtual.
19327
19328         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19329         bblock->code does not remain empty.
19330
19331 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19332
19333         * arrays.cs: Add regression test for #75832.
19334
19335         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19336         rules. Fixes #75832.
19337
19338         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19339         instruction scheduling.
19340
19341 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19344
19345 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19346
19347         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19348
19349         * mini-codegen.c: Fix VC build.
19350
19351         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19352
19353 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19354
19355         * mini.h: fix signature for mono_register_opcode_emulation.
19356
19357 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19358
19359         * mini.c: Get rid of most of the helper_sig_... constants using
19360         mono_create_icall_signature ().
19361
19362 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19363
19364         * jit-icalls.c (helper_ldstr): New helper function.
19365
19366         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19367
19368         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19369         throw, load the string using a helper call instead of creating a string object.
19370
19371         * aot.c: Update after LDSTR changes.
19372
19373         * mini.h: Bump AOT file version.
19374         
19375         * aot.c: Save class size info into the AOT file. Print more statistics during
19376         compilation.
19377
19378         * mini.h: Bump AOT file version.
19379
19380         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19381         ordering of disasm cases. Fixes #74957.
19382
19383 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19384
19385         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19386         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19387         the generic code needed for the ARM port.
19388
19389 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19390
19391         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19392         inssel-arm.brg: more ARM features and fixes.
19393
19394 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19395
19396         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19397         ARM port work in progress.
19398
19399 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19400
19401         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19402
19403         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19404
19405         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19406
19407         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19408
19409         * *-ia64.*: Ongoing IA64 work.
19410         
19411         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19412
19413 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19414
19415         * TODO: Remove out-of-data todo stuff.
19416
19417         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19418         dead code.
19419
19420         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19421
19422         * mini.h: Bump corlib version.
19423
19424 2005-07-27  Martin Baulig  <martin@ximian.com>
19425
19426         * mini-codegen.c
19427         (create_copy_ins): Added `const unsigned char *ip' argument; set
19428         `copy->cil_code' from it.
19429
19430 2005-07-27  Martin Baulig  <martin@ximian.com>
19431
19432         * mini-exceptions.c (mono_handle_exception): Don't call
19433         mono_debugger_handle_exception() for filters.
19434
19435 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19436
19437         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19438         as well.
19439
19440 2005-07-26  Martin Baulig  <martin@ximian.com>
19441
19442         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19443
19444         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19445         helper_compile_generic_method() if the method is actually virtual
19446         and non-final.
19447
19448 2005-07-26  Martin Baulig  <martin@ximian.com>
19449
19450         * mini.c
19451         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19452         public; this is now accessed directly by the debugger.
19453         (mono_generic_trampoline_code): Removed.
19454
19455         * debug-mini.c
19456         (mono_debug_init_method): Also add interncalls and wrappers.
19457
19458 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19461
19462 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19463
19464         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19465
19466 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19467
19468         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19469
19470 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19471
19472         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19473         getting TLS offsets on AMD64 too.
19474
19475 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19476
19477         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19478
19479 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19480
19481         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19482         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19483
19484 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19487
19488         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19489         to mini.c.
19490
19491         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19492         mono_sparc_is_virtual_call ().
19493         
19494         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19495
19496         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19497         trampoline parameters.
19498
19499         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19500         
19501         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19502         to mono_arch_get_vcall_slot_addr.
19503
19504         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19505         trampoline code.
19506
19507         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19508
19509 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19510
19511         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19512
19513 2005-07-19  Martin Baulig  <martin@ximian.com>
19514
19515         * exceptions-amd64.c (throw_exception): Call
19516         mono_debugger_throw_exception() here like we're doing it on i386.
19517
19518 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19519
19520         * mini-ia64.c: Add optimized TLS access support.
19521
19522 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * mini-exceptions.c: Ongoing IA64 work.
19525
19526         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19527
19528         * mini.c: Use the default optimization set when embedding. Fixes
19529         #75194.
19530
19531 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19532
19533         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19534         of trampolines to a separate file.
19535
19536         * mini-trampolines.c: New file.
19537
19538         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19539         separate file.
19540         
19541         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19542         amd64/ia64 code.
19543
19544         * mini-codegen.c: Fix cygwin build.
19545
19546 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19547
19548         * mini.c: Add some minor changes needed by the IA64 port.
19549
19550         * *-ia64.*: Ongoing IA64 work.
19551
19552 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19553
19554         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19555         trampolines into arch-independent and arch-dependent parts.
19556
19557         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19558
19559 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19560
19561         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19562
19563         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19564         the xp-regalloc-branch for amd64.
19565
19566         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19567         xp-regalloc-branch for x86.
19568
19569 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19570
19571         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19572
19573 2005-07-06  Martin Baulig  <martin@ximian.com>
19574
19575         * mini.c
19576         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19577         (mono_jit_runtime_invoke): Likewise.
19578
19579 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19580
19581         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19582         on x86 too.
19583         
19584         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19585         without loading their metadata. Reorganize the file format so exception handling+
19586         debug info is kept separate from normal method info. Create MonoJitInfo 
19587         structures for methods lazily.
19588
19589         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19590         loading metadata.
19591         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19592
19593         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19594
19595         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19596         in AOT code.
19597
19598         * mini.h: Bump AOT file version.
19599
19600 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19601
19602         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19603
19604 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19605
19606         * Makefile.am (check-local): Call semdel-wrapper.
19607
19608 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19609
19610         * mini-x86.c: Revert the last change as it seems to break the build..
19611
19612 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19615         
19616         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19617
19618 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19619
19620         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19621         outside of the macro, so strange stuff doesn't happen with gcc4
19622         (NEW_AOTCONST_TOKEN): Likewise.
19623
19624 2005-06-28  Martin Baulig  <martin@ximian.com>
19625
19626         * mini.c (mini_class_is_system_array): New static method; use this
19627         instead of `klass->parent == mono_defaults.array_class' everywhere
19628         since this also works for the new generic array class.
19629
19630 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19631
19632         * inssel.brg: Remove warnings.
19633
19634 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * mini-ia64.c: Ongoing IA64 work.
19637
19638         * basic-float.cs: Add float->i1 conversion test.
19639
19640         * iltests.il: Add conv.u4 test.
19641
19642 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19643
19644         * inssel-long.brg: Fix bug caused by last change.
19645
19646 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19647
19648         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19649         BSDs.  Allows the x86 JIT to work on OSX86
19650
19651 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19654         u4->i8 conversion.
19655
19656         * mini-ia64.c: Ongoing IA64 work.
19657
19658 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19659
19660         * mini-ia64.c: Ongoing IA64 work.
19661
19662         * driver.c: Clean up jit_code_hash as well when using --regression.
19663
19664         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19665
19666         * basic-long.cs: Add tests for long->u4 conversion.
19667
19668 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19669
19670         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19671         that we do not depend on undefined C behavior: the order stuff
19672         gets evaluated within an expression. Fixes mono when compiled on
19673         GCC 4.
19674
19675 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * *-ia64.*: Ongoing IA64 work.
19678
19679         * aot.c: Lower memory usage while loading AOT methods.
19680
19681         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19682
19683         * mini.h: Bump AOT file format version.
19684
19685 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19686
19687         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19688
19689 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19690
19691         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19692         not on callee assembly). Fixed some comments.
19693
19694 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19695
19696         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19697         it gets proper disassembly.
19698         (emit_method_info): Remove some dead code.
19699
19700         * mini.c (mini_method_compile): Allways allocate the GOT var in
19701         mono_method_to_ir for emulating opcodes.
19702
19703 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19704
19705         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19706         before freeing the code memory. Fixes #74990.
19707
19708         * objects.cs: Add regression test for #74992.
19709
19710         * liveness.c: Extend live ranges of arguments to the beginning of the
19711         method. Fixes #74992.
19712
19713         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19714         so it points into the faulting instruction.
19715
19716 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19717
19718         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19719
19720         * *-ia64.*: Ongoing IA64 work.
19721
19722         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19723
19724 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19725
19726         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19727
19728         * *-ia64.*: Ongoing IA64 work.
19729
19730 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19731
19732         * basic-long.cs: Add tests for add/sub.ovf.
19733
19734         * basic.cs: Add tests for sub.ovf.
19735
19736         * *-ia64.*: Ongoing IA64 work.
19737
19738 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * *-ia64.*: Ongoing IA64 work.
19741
19742         * basic.cs: Add conv.ovf.i4.un test.
19743
19744 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19745
19746         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19747         
19748 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19749
19750         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19751
19752 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19753
19754         * *-ia64.*: Ongoing IA64 work.
19755
19756 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19757
19758         * trace.[ch]:
19759         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19760
19761 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19762
19763         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19764
19765 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19766
19767         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19768
19769         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19770         of a call is callable by a near call.
19771
19772 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19773
19774         * mini-ia64.c: Ongoing IA64 work.
19775
19776 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19777
19778         * genmdesc.c: Make the generated array non-static.
19779
19780         * inssel-long.brg: Fix LSHR_IMM rule.
19781
19782         * *-ia64.*: Ongoing IA64 work.
19783
19784         * *-ia64.*: Ongoing IA64 work.
19785
19786 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19787
19788         * *-ia64.*: Ongoing IA64 work.
19789
19790         * *-ia64.*: Ongoing IA64 work.
19791         
19792         * mini-ia64.c: Ongoing IA64 work.
19793
19794         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19795
19796 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19797
19798         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19799         
19800         * objects.cs basic-long.cs: Move some tests to objects.cs.
19801
19802 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19803
19804         * *-ia64.*: Ongoing IA64 work.
19805
19806         * iltests.il: Add a new test.
19807
19808         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19809         newobj. Fixes #75042.
19810
19811 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19812
19813         * *-ia64.*: Ongoing IA64 work.
19814         
19815         * *-ia64.*: Ongoing IA64 work.
19816         
19817         * *-ia64.*: Ongoing IA64 work.
19818
19819         * basic.cs objects.cs: Move tests accessing static variables as well.
19820
19821         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19822
19823 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19826
19827         * driver.c: Always print failed tests.
19828
19829         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19830         frame pointer.
19831
19832         * *ia64*: Ongoing IA64 work.
19833
19834 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19835
19836         * basic.cs: Add tests for add.ovf. Fix warnings.
19837
19838 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19839
19840         * driver.c (mono_main): Avoid crash if no argument is passed to
19841         --break;  Do not use g_error, but f_printf.   And fix all other
19842         ocurrences of the same crash.
19843
19844 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19845
19846         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19847         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19848         Fixes #74742.
19849
19850 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19851
19852         * *-ia64.*: Add beginnings of IA64 backend.
19853
19854         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19855
19856 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19857
19858         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19859         Fixes #74925.
19860
19861         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19862
19863         * mini-amd64.c: Fix a warning.
19864
19865 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19868         in float_neg. Fixes #74897.
19869
19870         * mini-amd64.c (emit_call): Fix another near call bug.
19871
19872 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19873
19874         * declsec.c: Keep the appdomain information in the structure. Added a 
19875         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19876         value gets overwritten).
19877         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19878         an MonoAppDomain member to MonoSecurityFrame.
19879         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19880         used in the stack walk. Now use a MonoArray which grow (double) when
19881         it gets full.
19882
19883 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19884
19885         * mini.c: Re-enabled runtime cleanup, since running threads should
19886         now properly stop when exiting.
19887
19888 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * mini-codegen.c: New file contaning the arch-independent local
19891         register allocator. Not used by any architectures yet.
19892
19893         * mini.h linear-scan.c: Merge some changes from the 
19894         mini-xp-local-regalloc branch.
19895
19896 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19897
19898         * mini-amd64.c (emit_call): Fix calls to native functions when the
19899         runtime is compiled as a shared library. Fixes #74756.
19900
19901         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19902         on a literal field. Fixes #74751.
19903
19904 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19905
19906         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19907
19908 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19909
19910         * objects.cs: Add missing null casting test.
19911
19912 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19915         in wrapper methods. Also rename 'address' variable to 'offset'.
19916
19917 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19920         warnings.
19921         
19922         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19923
19924         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19925         work on windows.
19926
19927 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19928
19929         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19930
19931 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19932
19933         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19934         just the last bytes.
19935
19936 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19937
19938         * aot.c (mono_compile_assembly): Fix warning.
19939
19940         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19941         by the _MSC_VER stuff.
19942
19943 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * inssel-long.brg: Fix #74588.
19946
19947         * cpu-amd64.md: Fix #74591.
19948
19949         * iltests.il: Add new regression tests.
19950
19951 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19952
19953         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19954         valuetype.
19955
19956 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19957
19958         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19959
19960         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19961         from Bill Middleton <flashdict@gmail.com>.
19962
19963 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * arrays.cs: Add new regression test. Fix warnings.
19966
19967 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19968
19969         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19970         and leakage in CKFINITE.
19971
19972         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19973         this to a null op since it is called on amd64 too.
19974
19975         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19976
19977         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19978         body since this is not used on amd64.
19979         
19980         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19981
19982         * mini-amd64.c: Remove obsolete fixmes.
19983
19984         * mini.c (print_method_from_ip): Fix debugging support.
19985
19986 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19987
19988         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19989         so that expressions that don't give much gain are not reduced.
19990         * ssapre.h: Likewise.
19991
19992 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19993
19994         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19995
19996         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19997
19998         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19999
20000 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20003
20004         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20005
20006 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20007
20008         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20009         stack touching.
20010
20011         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20012
20013         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20014
20015         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20016
20017         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20018         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20019
20020         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20021
20022         * mini-x86.c: Fix up stack overflow handling.   
20023
20024         * exceptions.cs: Add new regression test.
20025
20026 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20027
20028         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20029         mono_jit_thread_attach.
20030
20031         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20032
20033 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20034
20035         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20036         avoid calling constructors using callvirt.
20037
20038         * inssel.brg: Fix #74073.
20039
20040 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20041
20042         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20043         compilation with non-GCC compilers.
20044         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20045         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20046
20047 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20048
20049         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20050         klass->interface_offsets (will likely fix bug#74073).
20051
20052 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20053
20054         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20055
20056 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20057
20058         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20059         to amd64_div_reg_size ().
20060         
20061         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20062
20063 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20066
20067 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20070
20071 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20074         
20075         * mini.c (mono_precompile_assembly): Load and precompile referenced
20076         assemblies as well. Fixes #74015.
20077
20078 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20079
20080         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20081
20082 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20083
20084         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20085         a lot of checks and (anyway) permissions cannot work until corlib is 
20086         loaded.
20087
20088 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20089
20090         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20091
20092 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20093
20094         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20095         calls (fixes bug#72824).
20096
20097 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20098
20099         * mini.c: fix tail recursion elimination (see test in bug#73936).
20100
20101 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20104         some fp functions in sse2 mode.
20105
20106 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20109
20110 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20111
20112         * mini.h mini.c: Add mono_get_jit_tls_key ().
20113
20114         * mini-x86.c: Enable fast TLS support on windows.
20115
20116 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20117
20118         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20119         * mini.c: Check for p/invoke method when generating code. If a
20120         p/invoke method, or it's class, isn't decorated with [Suppress
20121         UnmanagedCodeSecurity] then generate code to call System.Security.
20122         UnmanagedDemand (only if the security manager is active).
20123
20124 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20127         last change as it seems to cause strange crashes.
20128         
20129 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20130
20131         * *.c: handle unsafe function pointers where needed.
20132
20133 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20134
20135         * mini.c (mono_jit_free_method): Remove the fixme too.
20136
20137 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20138
20139         * mini.c: As discussed, make the code actually free the delegate
20140         thunk now, to enable the debugging of delegate problems, use
20141         MONO_DEBUG=1 when running Mono. 
20142
20143         This takes also care of parts of the leaks as seen by Joe.
20144
20145 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20148         thread_tls_offset calculation.
20149
20150 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20151
20152         * declsec.c: Reworked linkdemand checks for icall. The previous code
20153         was using the declaration code (untrusted) and didn't work as expected
20154         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20155         specific case.
20156
20157 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20158
20159         * iltests.il: Add new localloc test.
20160
20161         * mini-amd64.c: Handle large stack allocations the same way as on
20162         windows if stack overflow handling is working.
20163         
20164         * mini-amd64.c: Allocate the signal stack using mmap.
20165
20166         * mini.c (sigsegv_signal_handler): Fix reading of context.
20167
20168         * mini-exceptions.c: Fix up stack overflow handling.
20169
20170         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20171
20172         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20173
20174         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20175
20176         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20177
20178         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20179         tramp_init functions as they are no longer needed.
20180
20181 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20182
20183         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20184         
20185         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20186
20187         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20188         
20189         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20190         support that now.
20191
20192         * mini-ops.h: Add OP_LMUL_IMM.
20193
20194         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20195         long mul/div opcodes as intrinsic.
20196
20197         * mini-amd64.c (emit_call): Handle the case when the callee might be
20198         an AOT method.
20199
20200 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20201
20202         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20203         extra safe.
20204         
20205         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20206
20207         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20208
20209 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20210
20211         * mini.c (mono_codegen): Don't leak here, to help people running
20212         monogrind.
20213
20214 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20217         conversions in sse2 mode.
20218
20219         * basic-float.cs: Add regression test.
20220         
20221         * mini-amd64.c: Reenable sse2.
20222
20223 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20224
20225         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20226
20227 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20228
20229         * driver.c: Copyright text should include 2005.
20230         
20231 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * cpu-amd64.md (load_membase): Fix more max lengths.
20234
20235 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20236
20237         * cpu-amd64.md (load_membase): Fix max length.
20238
20239         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20240
20241         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20242
20243         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20244         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20245
20246         * basic-float.cs: Add rounding regression test.
20247
20248         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20249
20250 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20251
20252         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20253         structures in registers for pinvoke wrappers.
20254
20255 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20256
20257         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20258
20259 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20260
20261         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20262         wrapper to mono_jit_thread_attach.
20263
20264         * mini.c (mini_jit_thread_attach): New jit icall.
20265
20266         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20267         native->managed wrappers.
20268
20269         * exceptions.cs: Add new regression test.
20270
20271         * mini.c (optimize_branches): Check regions in the cbranch to throw
20272         block case as well. Fixes #73242.
20273
20274 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20275
20276         * mini.c: thread safety fixes.
20277
20278 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20279
20280         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20281         patching stuff, since delegates use jump trampolines so there is
20282         no caller.
20283
20284         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20285         jump trampolines.
20286         
20287         * tramp-amd64.c: Fix build.
20288
20289         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20290         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20291
20292         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20293         Rename this to mono_arch....
20294         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20295
20296         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20297
20298         * mini-amd64.c (emit_call): If both the caller and the callee is
20299         guaranteed to have 32 bit addresses, emit a normal call.
20300
20301         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20302
20303         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20304         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20305         method_ptr inside delegates.
20306
20307 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20310         invalidated. Fixes #73001.
20311
20312         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20313
20314         * mini-x86.c: Only use stdcall for pinvokes on windows.
20315
20316 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20317
20318         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20319         * mini-x86.c: remove unreliable __thread var offset detection,
20320         use the correct accessors and enable by default.
20321
20322 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20323
20324         * mini.c (mono_jit_free_method): Fix memory leak.
20325
20326 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20327
20328         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20329
20330 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20331
20332         * cpu-amd64.md: Fix lengths of atomic opcodes.
20333
20334 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20335
20336         * driver.c: try to not imply using ICU is any good.
20337
20338 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20339
20340         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20341         functions as inline ops.
20342
20343         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20344         some Interlocked functions as inline ops.
20345
20346         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20347
20348         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20349
20350         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20351
20352         * mini.c: Add support for OP_NOT_TAKEN.
20353
20354         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20355         structures in registers for pinvoke wrappers.
20356
20357         * mini-amd64.c: Fix warnings.
20358
20359 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20360
20361         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20362
20363         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20364
20365         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20366         address instead of loading the address from it.
20367
20368         * mini-x86.c: Add support for returning small structs in registers
20369         on Win32. Fixes part of #70864.
20370         
20371 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20372
20373         * trace.c (get_token): Improve error checking.
20374
20375 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20376
20377         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20378
20379 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20380  
20381         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20382         it can be reused for MonoClass.
20383         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20384         _LINKDEMAND.
20385
20386 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20387
20388         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20389         instead of a MonoReflectionMethod. The method information wasn't used
20390         when displaying SecurityException details (but will be now).
20391
20392 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20393
20394         * Makefile.am : windows build fix.
20395
20396 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20397
20398         * iltests.il: Add new regression test.
20399
20400         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20401         #72522.
20402
20403 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20404  
20405         * mini.c: Moved linkdemand check into helper function check_linkdemand
20406         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20407         LDFTN, LDVIRTFTN).
20408
20409 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20410
20411         * declsec.c: Added statistics counter for different kinds of 
20412         LinkDemands.
20413         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20414         (and commented) declaration.
20415         * mini.c: Added statistics counter for security Demand code 
20416         generation. Added display of security statistics.
20417
20418 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20419
20420         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20421         Fix compilation errors under gcc-2.95.
20422
20423 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20424
20425         * mini.c, driver.c: Use the new jit trampoline hashtable
20426
20427 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20428
20429         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20430
20431 2005-02-11  Martin Baulig  <martin@ximian.com>
20432
20433         * debug-mini.c (mono_debug_close_method): Free the line number array.
20434
20435 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20436
20437         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20438         icalls.
20439
20440         * mini.h: Bump AOT file format version. 
20441
20442 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20443
20444         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20445         APTC and P/Invoke.
20446         * declsec.h: Added macros to get/set lazyly initialized security 
20447         informations about assemblies. Added new enum for different type of
20448         possible LinkDemand violation. Added function to check LinkDemands.
20449         * mini.h: Added a field to MonoCompile to hold any security violation
20450         detected when JITting a method (so it can be thrown later).
20451         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20452         and CEE_CALLVIRT. Added code to throw exception at the end of
20453         mini_method_compile (note: the exception is unhandled right now).
20454
20455 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20456
20457         * mini.c, jit-icalls.c: use the managed implementation of
20458         memset for initobj and memset, to avoid managed <-> unmanaged
20459         transitions.
20460
20461 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20464         optimization if it would need a GOT var.
20465
20466         * basic.cs: Add tests for constant propagation and switch statements.
20467
20468         * ssa.c: Fix out-of-range constant propagation and switch statements.
20469
20470 2005-02-09    <vargaz@freemail.hu>
20471
20472         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20473
20474 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20475
20476         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20477
20478 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20479
20480         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20481
20482 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20483
20484         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20485         arithmetic operations.
20486
20487 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20488
20489         * mini-ppc.c: add a workaround for broken user code that
20490         DllImports vararg functions with non-vararg signatures.
20491
20492 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20493
20494         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20495         meaningfull error message for assemblies written in Managed C++.
20496
20497         * tramp-amd64.c mini-amd64.h: Add support for 
20498         create_trampoline_from_token ().
20499
20500         * aot.c mini-x86.c abcremoval.c: Applied patch from
20501         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20502
20503 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20504
20505         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20506         which takes a MonoImage/token as parameter instead of a MonoMethod.
20507
20508         * aot.c: Use the new trampoline for initializing vtables.
20509
20510         * aot.c: Add support for ldfld/stfld_remote wrappers.
20511
20512         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20513         rules for compare <MEM>, IMM.
20514
20515         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20516
20517         * aot.c: Handle inherited finalizers correctly.
20518
20519 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20520
20521         * inssel.brg (stmt): Add a missing _setup_... ().
20522
20523         * aot.c: Save some parts of the class state to the AOT file and use it
20524         to recompute that state when a class is initialized.
20525
20526         * mini.c: Install AOT hooks into the runtime.
20527
20528         * mini.h: Bump AOT file format version.
20529         
20530         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20531         Fixes #72148.
20532
20533         * iltests.il: Add new test.
20534
20535 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20536
20537         * mini.c: fix typo.
20538
20539 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20540
20541         * mini.c: setup the statistical profiler in the thread attach
20542         callback to cope with the new single thread code.
20543
20544 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20545
20546         * mini-ppc.c: ensure we have enough room for the profiler
20547         calls (fixed bug#72084).
20548
20549 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20550
20551         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20552         it.
20553
20554 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20555
20556         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20557
20558 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20559
20560         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20561         to succesfully execute parrotbench).
20562         * ssapre.h: Likewise.
20563
20564 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20565
20566         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20567         variable for stores to method arguments (fixes a SSAPRE issue).
20568
20569 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20570
20571         * mini.c: handle value types in dup, fixes gen-112.cs.
20572
20573 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20574
20575         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20576         sequence for calls in dynamic methods to avoid thunks.
20577
20578 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20579
20580         * mini.c: correctly remove dynamic methods from the hashtable.
20581
20582 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20583
20584         * driver.c: Disabled SSAPRE until fix the bug that appears
20585         in IronPython's parrotbench.
20586
20587 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20588
20589         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20590
20591         * mini.c (mono_method_to_ir): Revert the previous change.
20592         
20593         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20594         when AOT compiling.
20595
20596         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20597         mono_jit_info_table_find () etc. when running under valgrind.
20598
20599         * inssel.brg: Fix warnings.
20600
20601         * mini-exceptions.c: Fix warnings.
20602
20603 2005-01-31  Martin Baulig  <martin@ximian.com>
20604
20605         * driver.c (compile_all_methods_thread_main): Don't try to compile
20606         generic methods or anything which has type parameters.
20607
20608 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20609
20610         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20611
20612         * TestDriver.cs: Add --verbose flags.
20613
20614         * graph.c ssa.c: Fix 64 bit warnings.
20615         
20616         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20617         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20618         Fix 64 bit warnings.
20619
20620         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20621         variable not spotted by gcc.
20622         
20623         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20624         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20625         X86_COMPARE_MEMBASE opcodes.
20626
20627         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20628
20629 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20630
20631         * *: MonoMethod->signature might be NULL now. You *MUST* use
20632         mono_method_signature.
20633
20634 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20635
20636         * driver.c (compile_all_methods_thread_main): Compile the methods
20637         without invoking cctors.
20638
20639 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20640
20641         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20642         * basic-calls.cs: test for the above.
20643
20644 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20645
20646         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20647         MonoJitInfo changes.
20648
20649 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20652         eagerly if it contains dynamic methods.
20653         
20654         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20655
20656         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20657         trace, it is now computed by an icall from trace_ips.
20658         
20659         * mini-exceptions.c: Fix a warning.
20660
20661 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20662
20663         * mini-exceptions.c: don't bother getting stack trace info if
20664         it's not going to be used.
20665
20666 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20667
20668         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20669         ssapre-mini-ops.h.
20670
20671 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20672
20673         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20674
20675         * aot.c: Avoid calling mono_method_get_header () if not needed.
20676
20677         * mini.h: Bump AOT file format version.
20678         
20679         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20680
20681         * mini.c (mono_print_tree): Print more info for calls.
20682
20683 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20684
20685         * declsec.h: Remove warning by adding missing include for marshal.h
20686
20687 2005-01-26  Martin Baulig  <martin@ximian.com>
20688
20689         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20690         `ip' twice.
20691
20692 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20695         flags.
20696
20697         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20698
20699         * aot.c (mono_compile_assembly): Fix a warning.
20700
20701 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20702
20703         * declsec.c: Look for security attributes on the original MonoMethod 
20704         (and not the wrapped one). This fix permissions on icalls.
20705
20706 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20707
20708         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20709
20710         * mini.c (mono_allocate_stack_slots): Add a fixme.
20711
20712         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20713
20714 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20715
20716         * inssel.brg: optimize casts of sealed types (more
20717         optimizations waiting for fixes in remoting).
20718
20719 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20720
20721         * inssel.brg (stmt): Add another dummy rule.
20722
20723         * driver.c: Fix warnings.
20724
20725         * driver.c (mono_main): If running under valgrind, instruct glib to use
20726         the system allocation functions so valgrind can track the memory
20727         allocated by the g_... functions.
20728
20729         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20730
20731         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20732
20733         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20734
20735         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20736         variables in try regions.
20737
20738         * mini.c (mini_method_compile): Don't disable optimizations on large
20739         methods when AOT compiling.
20740
20741         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20742         allocate stack slots. Not yet used.
20743
20744 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20745
20746         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20747
20748 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20749
20750         * mini-ppc.c: make the branch info relative as the code
20751         buffer can be reallocated.
20752
20753 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20754
20755         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20756         * driver.c: Removed the AOT/security restriction. Now initialize the
20757         security manager (in metadata) if --security is used.
20758         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20759         rather than the pointer to declarative security, when AOT is used.
20760
20761 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20762
20763         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20764         basic blocks, reduced intrinsic exception throwing code size.
20765
20766 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20767
20768         * driver.c (mini_usage): Reorder the usage screen.
20769
20770 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20771
20772         * mini.c (mono_resolve_patch_target): Fix warning.
20773
20774 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20775
20776         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20777         previous patch.
20778
20779         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20780
20781         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20782         breaks the amd64 build.
20783
20784         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20785         register allocation. Fixes #71454.
20786
20787         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20788
20789         * arrays.cs: Add new regression test.   
20790
20791 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20792
20793         * ssapre.c: Turned usage of snprintf to GString.
20794         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20795         (I left it on by mistake in my previous commit).
20796
20797 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20798
20799         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20800         on cond branch optimization (fixes bug# 71515).
20801
20802 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20803
20804         * abcremoval.c: Fixed bug 71062.
20805         * abcremoval.h: Likewise.
20806
20807 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20808
20809         * mini.c: Added a new functionality to optimize_branches, the removal
20810         of useless basic blocks, and fixed some problem in the removal of
20811         critical edges; some utility functions added for both purposes.
20812         * ssapre.c: Added complex expression support, and fixed bug 70637.
20813         * ssapre.h: Likewise.
20814         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20815         enabled in SSAPRE.
20816         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20817         * driver.c: Re-enabled SSAPRE.
20818
20819 2005-01-19  Martin Baulig  <martin@ximian.com>
20820
20821         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20822         the result of mono_get_method_constrained().
20823
20824 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20825
20826         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20827         manager.
20828
20829 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20830
20831         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20832         be detected.  Fixes #59296.
20833
20834 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20835
20836         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20837         which can happen. Fixes #71361.
20838
20839 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20840
20841         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20842         manager.
20843
20844 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20845
20846         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20847         appdomain-unload.exe to fail.
20848         
20849         * mini.c: Fix some memory leaks.
20850
20851 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20852
20853         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20854         Fixed bug and sped up some codepaths.
20855
20856 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20857
20858         * mini.c: Fix some memory leaks.
20859
20860         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20861         conversion.
20862
20863         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20864
20865         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20866         #71320.
20867
20868         * iltests.il: Add regression test for #71320.
20869
20870 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20871
20872         * mini.c (mono_codegen): Fix installation of profiler hooks.
20873
20874         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20875
20876 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20877
20878         * mini.h, mini.c, cfold.c: optimize access to enum
20879         readonly fields, too. Eval conditional branches if possible
20880         to perform unreachable code removal in more cases.
20881
20882 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20883
20884         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20885
20886         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20887         code manager.
20888
20889         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20890         WinXP DEP. Fixes #71244.
20891
20892 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20893
20894         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20895
20896 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20897
20898         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20899
20900 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20901
20902         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20903         changes.
20904
20905         * mini.h: Bump AOT version.
20906
20907         * mini.h (MonoCompile): Change exvar to a hash table.
20908
20909         * mini.c: Allocate a separate exvar for each handler block.
20910
20911         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20912
20913         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20914         ex var with the pending exception and only throw if the two are equal.
20915         Fixes #68552.
20916         
20917         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20918
20919         * mini-x86.c: Fix warnings.
20920
20921         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20922         used by all the ports now.
20923
20924         * aot.c: Add write-symbols and save-temps options.
20925
20926 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20927
20928         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20929
20930 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20931
20932         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20933         operations.
20934
20935         * tramp-s390.c: Check vtable slot belongs to the domain.
20936
20937         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20938         as per other platforms.
20939
20940         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20941
20942 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20943
20944         * driver.c: we don't run the Main() code in a subthread anymore.
20945
20946 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20947
20948         * mini.c: added experimental rtc support in the statistical
20949         profiler: if the user has the permission, more accurate statistics
20950         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20951         The MONO_RTC value must be restricted to what the linux rtc allows:
20952         power of two from 64 to 8192 Hz.
20953
20954 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20955
20956         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20957
20958 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20959
20960         * mini-ppc.c: better icache flush for smp.
20961
20962 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20963
20964         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20965
20966         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20967         amd64 port, not yet used.
20968
20969 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20970
20971         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20972         a struct type.
20973
20974 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20975
20976         * driver.c: Added --security option to activate the security manager.
20977         Right now this will allow code generation for declarative demands and
20978         is disabled when AOT is specified.
20979         * mini.c: Add code generation for declarative security demands.
20980         * mini.h: Add mono_use_security_manager as an extern gboolean.
20981
20982 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20983
20984         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20985         emitting more dense assembly code.
20986
20987         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20988         exception throwing stuff.
20989
20990 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20991
20992         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20993         dead code.
20994
20995         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20996         left in by mistake.
20997
20998         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20999         fixed.
21000
21001         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21002
21003         * tramp-*.c: Only patch vtable slots if the object is in the current
21004         domain. Fixes appdomain-unload.exe.
21005
21006         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21007         
21008         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21009         x86 branch.
21010
21011 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21012
21013         * mini.c (reverse_branch_op): New helper function.
21014
21015         * mini.c (optimize_branches): Run the new optimization only on 
21016         platforms which support it. Also reverse all kinds of branches.
21017
21018         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21019
21020         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21021         a throw statement.
21022
21023         * mini.c (optimize_branches): Reverse not-equals branches if the false
21024         bblock is a throw. This happens a lot of time with argument checking in
21025         corlib.
21026
21027         * mini.c (mono_codegen): Add support for placing basic blocks after
21028         the function epilogue.
21029
21030         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21031         function epilogue.
21032         
21033 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21034
21035         * mini.c (setup_stat_profiler): Only set this up if the platform
21036         supports ITIMER_PROF.
21037
21038 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21039
21040         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21041         previous patch.
21042
21043         * inssel.brg: Fix a warning.
21044
21045 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21046
21047         * mini.c: added support for statistical profiler 
21048         (run with: --profile=default:stat).
21049
21050 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21051
21052         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21053
21054         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21055
21056         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21057         related to global registers from the amd64 port.
21058
21059 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21060
21061         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21062
21063         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21064         with global registers.
21065         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21066
21067         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21068
21069 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21070
21071         * debug-mini.c (encode_value): Fix off-by-one.
21072
21073         * aot.c (encode_value): Likewise.
21074
21075         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21076
21077 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21078
21079         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21080         AOT.
21081
21082         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21083         
21084         * aot.c (emit_method_info): Increase size of temp buffer.
21085
21086         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21087         the AOT case.
21088
21089 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21090
21091         * aot.c (emit_method_info): Fix build.
21092         
21093         * aot.c: Further rework of the AOT file format to reduce the size of
21094         the method info data.
21095
21096         * mini.h: Bump AOT file format version.
21097
21098 2004-12-27  Martin Baulig  <martin@ximian.com>
21099
21100         * mini.c (mini_get_method): New static method; call
21101         mono_get_method_full() and mono_get_inflated_method().
21102         (mono_method_to_ir): Use mini_get_method() instead of
21103         mono_get_method_full(). 
21104
21105 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21106
21107         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21108
21109 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21110
21111         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21112
21113         * inssel-amd64.brg: Add some optimization rules.
21114
21115 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21116
21117         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21118         standard not GC'd stuff is fine.
21119
21120 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21121
21122         * aot.c: Rework the AOT file format to get rid of most of the global
21123         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21124
21125         * mini.h: Bump AOT file format version.
21126         
21127 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21128
21129         * mini.h: Bump AOT file format version.
21130
21131         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21132         address is inside a GOT.
21133
21134         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21135
21136         * cpu-pentium.md: Increase the maximum size of some instructions which
21137         might involve a got access.
21138         
21139         * mini.c (get_method_from_ip): Another debug helper function.
21140
21141         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21142         when got var accesses are created during the decompose phase.
21143
21144         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21145
21146         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21147         argument mini_compile_method and to MonoCompile, and use this to
21148         determine whenever a given method is compiled for AOT. This allows the
21149         other methods compiled during AOT compilation to be free of AOT stuff,
21150         so the backends does not need to add special support for them by
21151         creating a fake GOT etc.
21152
21153         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21154         longer needed.
21155
21156 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21157
21158         * mini.c (mono_method_to_ir): It turns out that some of the
21159         x-appdomain wrappers are lax with types, so just ignore this for
21160         all wrappers.
21161
21162         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21163         at the vtable->klass. If it is non-shared code we can just use the
21164         vtable.
21165
21166 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21167
21168         * mini-ppc.c: access MonoDomain from tls, too.
21169
21170 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21171
21172         * declsec.c: Removed unused variable (and related warning ;-)
21173
21174 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21175
21176         * iltests.il: New test for LDELEMA on an array of ref types.
21177
21178         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21179         all ldelema's on reftypes.
21180         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21181         it was the wrong place to put it.
21182
21183         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21184         register to pop to make this cleaner, at the request of Paolo.
21185
21186 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21187
21188         * mini-ops.h (OP_GETHASHCODE): New op.
21189
21190         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21191
21192         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21193         operation.
21194
21195         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21196         by 25%.
21197         
21198         * mini-x86.c (mono_arch_output_basic_block): Rather than
21199
21200         add ebp, 4
21201
21202         Emit
21203
21204         pop edx
21205
21206         The first is 3 bytes while the second is 1. This saves 36 kb on
21207         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21208         see a small boost because of icache locality.
21209
21210         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21211
21212 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21213
21214         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21215         started code sharing with the generic code.
21216
21217 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21218
21219         * mini-ppc.c, cpu-g4.md: added code for direct access to
21220         tls data slots.
21221
21222 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21223
21224         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21225          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21226         to OP_TLS_GET.
21227
21228 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21229
21230         * declsec.c|h: Added functions to cache the declarative stack modifiers
21231         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21232         structure.
21233         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21234         created. Register internal calls for System.Security.SecurityFrame::
21235         _GetSecurityFrame and _GetSecurityStack.
21236         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21237         the definitions for the new stack walk/callback mechanism.
21238         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21239         first security frame for LinkDemands and InheritanceDemands) and
21240         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21241         from lupus.
21242         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21243         walk initialization (lupus).
21244
21245 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21246
21247         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21248         idiom.
21249         (handle_loaded_temps): Do not create a temporary variable for
21250         things that we know are temps. They will never be modified.
21251         (mono_spill_call): Set MONO_INST_IS_TEMP
21252         (mono_emulate_opcode): ditto
21253         (emit_tree): ditto
21254         (mono_method_to_ir.CEE_DUP): ditto
21255
21256 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21257
21258         * mini.c (type_to_eval_stack_type): Make this handle the void type
21259         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21260         (emit_tree): use ip_in_bb to special case some common idioms
21261         Update all callers to pass in the IP.
21262         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21263
21264         This gives us a nice 2% speedup in mcs bootstrap.
21265
21266         * mini-x86.c (peephole_pass): Peephole pass to make
21267         mov  [foo], eax
21268         push [foo]
21269
21270         into
21271
21272         mov [foo], eax
21273         push eax
21274
21275         * mini.c (ip_in_bb): new method.
21276         (mono_method_to_ir): use this method rather than doing the hash
21277         lookup ourselves.
21278
21279         * linear-scan.c (mono_linear_scan): When expiring actives, you
21280         don't need to keep around variables that expire on this
21281         instruction. This makes it so that:
21282              a = b + 1
21283         will turn into:
21284              store (ebx add (ebx, 1))
21285         which will become
21286              add ebx, 1
21287
21288 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21289
21290         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21291         combination to avoid doing two copies. Fix up problems with previous
21292         patch.
21293
21294         * mini.c: Fix 64 bit warnings.
21295
21296         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21297
21298 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21299
21300         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21301         changes from the x86 code.
21302
21303         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21304
21305 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21306
21307         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21308         throwing code to reduce its size, unify the AOT and non-aot code and 
21309         get rid of relocations in the AOT case.
21310
21311         * mini-x86.h mini.c exceptions-x86.c 
21312         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21313         raise corlib exceptions which doesn't require relocations in the 
21314         caller.
21315
21316         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21317
21318 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21319
21320         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21321         needed.
21322
21323         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21324         in the AOT case.
21325
21326 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21327
21328         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21329         with add function when used from Inc/dec atomic 
21330         functions. Re-enabled optimization on x86.
21331         * mini-ops.h: renamed atomic_add functions to
21332         allow _add to match the Interlocked::Add and
21333         _add_next to match Interlocked::Inc/Dec.
21334
21335 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21336
21337         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21338         linking of BBs to the end BB, and enabled SSAPRE also with
21339         consprop and copyprop (which was prevented by that bug).
21340
21341 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21342
21343         * mini-x86.c: disabling the Interlocked optimizing code. 
21344
21345 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21346
21347         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21348         file version check.
21349         
21350 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21351
21352         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21353         interlocked optimization due lack of support on x86, rewrote 
21354         exchange to take into account that base may be in eax.
21355         
21356         xsp works again; activated Interlocked optimizing code.
21357         
21358 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21359
21360         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21361
21362 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21363
21364         * mini-ops.h: Add new opcodes.
21365
21366         * mini.h: Add new patch types. Add got_var to MonoCompile.
21367
21368         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21369         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21370         make it work with all kinds of patchable code.
21371
21372         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21373         address of the GOT, and referencing entries in the GOT.
21374
21375         * mini.c: Add code to load the GOT address if needed by an opcode.
21376
21377         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21378         independent AOT code on the x86 using an elf-style Global Offset Table.
21379
21380 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21381
21382         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21383
21384 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21385
21386         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21387         when running xsp.
21388
21389 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21390
21391         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21392         of Interlocked:Increment/Decrement/Add as inline ops.
21393         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21394
21395 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21396
21397         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21398         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21399
21400 2004-12-12  Duncan Mak  <duncan@ximian.com>
21401
21402         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21403         again. `patch_info->table_size' is no longer valid after Zoltan's
21404         commit #37636.
21405
21406 2004-12-12  Martin Baulig  <martin@ximian.com>
21407
21408         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21409         if we are the "real" method, ie. not an inlined method inside it.
21410
21411 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21412
21413         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21414         before we look in the special fields table. This fixes
21415         ../tests/thread-static-init.cs.
21416
21417 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21418
21419         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21420         for Array get_Rank and get_Length. Fixes bug #70465.
21421
21422 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21423
21424         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21425         separate structure to reduce the size of MonoJumpInfo.
21426
21427 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21428
21429         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21430
21431 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21432
21433         * mini.c (mini_get_inst_for_method): Changed to allow ports
21434         to return a MonoInst instead of opcode 
21435         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21436         
21437         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21438         Allow ports to return a created MonoInst instead of op-code, will enable
21439         new optimizations.
21440         (renamed mini_get_opcode_for_method to better reflected the functionality)
21441
21442 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21443
21444         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21445
21446 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21447
21448         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21449         Fixes #69985.
21450
21451 2004-12-08  Martin Baulig  <martin@ximian.com>
21452
21453         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21454         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21455
21456 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21457
21458         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21459         correctly.
21460
21461         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21462         arithmetic.
21463
21464 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21465
21466         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21467
21468 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21469
21470         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21471         bug introduced by the previous patch.
21472
21473 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21474
21475         * mini-ppc.c, objectc.cs: handle large structs passed by value
21476         (fixes bug #69972).
21477
21478 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21479
21480         * mini-ppc.c: OP_ARGLIST implementation from
21481         Geoff Norton  <gnorton@customerdna.com>.
21482
21483 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21484
21485         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21486         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21487
21488 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21489
21490         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21491
21492 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21493
21494         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21495         support.
21496
21497 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21498
21499         * mini-sparc.c: Zero out localled-ed memory.
21500
21501         * iltests.il: Add tests for zeroing out localloc-ed memory.
21502
21503 2004-12-04  Martin Baulig  <martin@ximian.com>
21504
21505         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21506         mono_method_get_signature_full().       
21507
21508 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21509
21510         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21511         and some utility functions (always for SSAPRE), integrated SSAPRE.
21512         * mini.h: Likewise.
21513         * driver.c: Added ssapre option.
21514         * ssa.c: Small fix on OP_ARG handling.
21515         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21516         * Makefile.am: Likewise.
21517
21518 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21519
21520         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21521         now in the xp code.
21522
21523         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21524         icall.
21525
21526 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21527
21528         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21529         
21530         * cpu-s390.md : Increase instruction length of oparglist.
21531
21532         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21533
21534 2004-11-30  Martin Baulig  <martin@ximian.com>
21535
21536         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21537         virtual generic methods.  We call a special helper_compile_generic_method()
21538         icall to retrieve the method from the vtable, inflate and compile
21539         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21540
21541         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21542
21543 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21544
21545         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21546
21547 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21550         Fixes #69929.
21551
21552 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21553
21554         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21555         platforms with PIC aot.
21556
21557 2004-11-28  Martin Baulig  <martin@ximian.com>
21558
21559         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21560         Fixes gen-112.cs.
21561
21562 2004-11-28  Martin Baulig  <martin@ximian.com>
21563
21564         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21565         the result of mono_type_get_underlying_type() to check whether
21566         we're byref.
21567
21568 2004-11-26  Martin Baulig  <martin@ximian.com>
21569
21570         * mini.c
21571         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21572         in the g_assert().
21573
21574 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21575
21576         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21577         the same way as the other arguments so they won't get clobbered.
21578
21579         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21580         calls through R11 since it is clobbered by the trampoline code.
21581
21582 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21583
21584         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21585         pick up in-tree mscorlib.dll.
21586
21587 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21588
21589         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21590
21591         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21592         runtime data/code are now stored in a table similar to the GOT in ELF. 
21593         This allows the code itself to be position independent.
21594
21595         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21596         loading changes.
21597
21598         * aot.c: Attach ELF type (object/function) directives to all global
21599         symbols.
21600
21601         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21602
21603         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21604
21605         * mini-amd64.h: Turn on PIC AOT code.
21606
21607         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21608         returning the offset within an OP_AOTCONST instruction where the GOT
21609         offset needs to be added.
21610
21611         * mini.h: Bump AOT file format version.
21612
21613 2004-11-25  Martin Baulig  <martin@ximian.com>
21614
21615         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21616         uninflated generic methods.
21617
21618 2004-11-25  Martin Baulig  <martin@ximian.com>
21619
21620         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21621
21622 2004-11-24  Martin Baulig  <martin@ximian.com>
21623
21624         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21625         original klass (this only applies for generic instances).
21626
21627 2004-11-24  Martin Baulig  <martin@ximian.com>
21628
21629         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21630         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21631         that array).
21632
21633 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21634
21635         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21636         localloc. Fixes #69678.
21637
21638         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21639         
21640 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21641
21642         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21643         used SSE registers on pinvoke calls. Fixes #69774.
21644
21645 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21646
21647         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21648         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21649
21650 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21651
21652         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21653         Refer directly to the mcs/ tree.
21654
21655 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21656
21657         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21658         Check if a trampoline for a synchronized method is required. 
21659
21660 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21661
21662         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21663         with localloc if needed. Throe arithmetric exception in
21664         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21665         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21666
21667 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21668
21669         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21670         types before switching on type.  Fixes #69622.
21671
21672 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21673
21674         * Makefile.am (check-local): New.  Integrate into 'make check'.
21675         (MCS,RUNTIME): Define using in-tree mono and mcs.
21676         (ILASM): New.
21677         (%.exe): Use $(ILASM).
21678
21679 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21680
21681         * mini-ppc.c: adjust initial prolog size (bug #69691).
21682
21683 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21684
21685         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21686         #69664.
21687
21688 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21689
21690         * Makefile.am (clean-local): Rename from 'clean'.
21691
21692 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21693
21694         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21695         to mono_arch_is_int_overflow. 
21696         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21697         SIGFPE events.
21698
21699 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21700
21701         * declsec.c|h: New files to support declarative security attributes.
21702         Added function to check if a method has (applicable) security.
21703         * mini.c|h: Add check for declarative security attributes in
21704         mono_method_check_inlining.
21705         * Makefile.am: Added declsec.c and declsec.h to the build.
21706
21707 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21708
21709         * mini.c, mini.h: update to keep dynamic code info per-domain.
21710
21711 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21712
21713         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21714         (mini_init): Get rid of it from here too.
21715
21716 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21717
21718         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21719         implemented OP_RETHROW (patch by Geoff Norton
21720         <gnorton@customerdna.com>).
21721
21722 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21723
21724         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21725         between appdomains.  Fixes appdomain-unload on PPC.
21726
21727 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21728
21729         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21730         mini-exceptions.c: handle the new wrapper types.
21731         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21732         token value as a MonoClass* when compiling a wrapper.
21733         mono_jit_create_remoting_trampoline now takes an additional
21734         MonoRemotingTarget parameter.
21735         
21736 2004-11-10  Martin Baulig  <martin@localhost>
21737
21738         * mini.c (mono_method_to_ir): Use `generic_container->context'
21739         rather than creating a new one.
21740
21741 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21742
21743         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21744
21745         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21746
21747 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21748
21749         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21750         the experimental aot cache stuff.
21751
21752 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21753
21754         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21755         mini-exceptions.c: update to exception clause structure changes.
21756
21757 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21758
21759         * exceptions-x86.c (throw_exception): Fix warnings.
21760
21761         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21762         for OP_RETHROW.
21763
21764 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21765
21766         * exceptions-sparc.c (get_throw_exception): Really fix this.
21767
21768 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21769
21770         * tramp-*.c: we no longer support icalls without wrappers, so
21771         a bit of code can be removed here
21772
21773 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21774
21775         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21776         patch.
21777
21778         * cpu-sparc.md: Add op_rethrow.
21779
21780         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21781
21782         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21783
21784         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21785         * mini-ops.h: Add OP_RETHROW.
21786
21787         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21788
21789         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21790
21791 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21792         
21793         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21794         Makes the output much easier to read
21795
21796 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21797
21798         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21799         prevents another huge leak when compiling with ssa. Secondly, the
21800         performance of doing this rather than freeing the lists is much
21801         better. GList does a lock every time you allocate a list link,
21802         so that it can use a memory pool. So, it is better to just use
21803         a memory pool of our own.
21804         
21805         * ssa.c, linear-scan.c: replace g_list_remove_link with
21806         g_list_delete.  The remove one does not free the GList, so we were
21807         leaking memory. On -O=all --compile-all with corlib, this cut down
21808         3 MB of allocations.
21809
21810 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21811
21812         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21813
21814         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21815
21816         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21817         into a new function mono_create_jit_trampoline ().
21818
21819 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21820
21821         * trace.c (get_spec): Allow tracing of classes without a namespace.
21822
21823 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21824
21825         * mini.c: Fix pointer overwrite in mini_method_compile.
21826
21827 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21828
21829         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21830         The darwin ABI needs some special handling for 1 and 2 byte structs
21831         Lets use lbz/lhz instead of lwz everywhere.
21832         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21833         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21834         Use stb/sth for the former, and put the latter always on stack instead of in
21835         argument registers.
21836
21837 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21838
21839         * trace.c (is_filenamechar): Add '_'.
21840
21841 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21842
21843         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21844
21845         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21846
21847 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21848
21849         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21850         depends on libmonogc. Fixes #68805.
21851
21852 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21853
21854         * mini.c (mono_jit_free_method): Provide extra information for
21855         this error.  Currently this leaks, but will be turned into a
21856         developer option in the future.
21857
21858 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21859
21860         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21861
21862 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21863
21864         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21865         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21866         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21867
21868 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21869
21870         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21871         trampolines for AOT code.
21872
21873 2004-10-22    <vargaz@freemail.hu>
21874
21875         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21876         constructed types. Fixes #68136.
21877
21878 2004-10-21  Martin Baulig  <martin@ximian.com>
21879
21880         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21881         if it returns true, unwind the stack to the call instruction.
21882
21883 2004-10-21    <vargaz@freemail.hu>
21884
21885         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21886
21887         * mini.h: Bump AOT version number.
21888
21889         * objects.cs: Add another test for unbox trampolines.
21890
21891         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21892         valuetype methods.
21893
21894 2004-10-20    <vargaz@freemail.hu>
21895
21896         * driver.c: Add SHARED to the set of optimizations tested.
21897
21898         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21899
21900         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21901         used by CEE_NEWARR.
21902
21903         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21904
21905 2004-10-20  Martin Baulig  <martin@ximian.com>
21906
21907         * mini-exceptions.c (mono_handle_exception): Call
21908         mono_debugger_handle_exception() to tell the debugger about
21909         catch/finally clauses.
21910
21911 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21912
21913         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21914
21915         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21916         #68447.
21917
21918 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21919
21920         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21921         methods as their native size, fixed bug #57543, #57545.
21922         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21923         This saves a temporary register and mullw call down into 1 (minor perf
21924         increase for cases like sum = sum * 5;  This use to translate into:
21925             li r11,5
21926             mullw r28,r28,r11
21927         It now translates to
21928             mulli r28,r28,5
21929
21930 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21931
21932         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21933         #68388.
21934
21935 2004-10-11  Martin Baulig  <martin@ximian.com>
21936
21937         * mini.c (mono_method_to_ir): If we're a generic method, get the
21938         MonoGenericContainer from our MonoMethodNormal and create a
21939         MonoGenericContext from it.
21940
21941 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21942
21943         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21944
21945         * basic-long.cs: Add test for checked i8->i2 cast.
21946
21947 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21948
21949         * inssel-ppc.brg: added a couple of speedup rules.
21950
21951 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21952
21953         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21954         to speed up rebuilds.
21955
21956 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21957
21958         * mini-s390.c: Minor fix to OP_OR_IMM.
21959
21960 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21961
21962         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21963         better. Fixes appdomain-unload.exe on sparc.
21964
21965 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21966
21967         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21968         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21969         see bug 67324.
21970
21971 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21972
21973         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21974
21975 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21976
21977         * mini.c: Always generate a field read/write wrapper for members
21978         of the class MarshalByRefObject since the actual instance could
21979         be a CBO.
21980
21981 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21982
21983         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21984
21985 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21986
21987         * driver.c mini.h trace.c: Move the setting of the main assembly into
21988         a separate function called mono_trace_set_assembly () and call it after
21989         actually loading the main assembly. Fixes #66872.
21990
21991 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21992
21993         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21994         using the code manager.
21995
21996 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21997
21998         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21999
22000 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22001
22002         * cpu-amd64.md: Fix bug in previous patch.
22003         
22004         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22005         #66650.
22006
22007 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22008
22009         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22010         mini-exceptions.c: updates for changed stack walk interface.
22011
22012 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22013
22014         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22015
22016 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22019
22020 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22021
22022         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22023         since assemblies can't be unloaded.
22024         
22025 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22026
22027         * cpu-amd64.md: Fix more instruction lengths.
22028
22029         * cpu-amd64.md: Fix lengths of some instructions.
22030
22031 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22032
22033         * inssel.brg: Make the array ldelema check aot friendly.
22034
22035 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22036
22037         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22038
22039         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22040
22041 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22042
22043         * mini-x86.c: Fix build.
22044
22045         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22046         mono_type_get_underlying_type () helper function to simplify code.
22047         
22048 2004-09-09  Martin Baulig  <martin@ximian.com>
22049
22050         * mini-amd64.c: Don't access `type->data.klass' directly, call
22051         mono_class_from_mono_type() instead since the type may be a
22052         generic instance.
22053
22054 2004-09-09  Martin Baulig  <martin@ximian.com>
22055
22056         * mini-amd64.c (get_call_info): Fix support for generic instances.
22057         (add_valuetype): Use mono_class_from_mono_type() to get the class
22058         since we can be a generic instance.
22059
22060 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22061
22062         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22063
22064 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22065
22066         * liveness.c: reset spill costs on each scan: bug 62107
22067
22068 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22069
22070         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22071         unnecessary line that doesn't compile
22072
22073 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22074
22075         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22076         trampolines, make them call an error function so people can fix their
22077         code.
22078
22079 2004-09-06  Martin Baulig  <martin@ximian.com>
22080
22081         * mini.c (mono_method_to_ir): When initializing locals, handle a
22082         generic instances like a valuetype if it's a valuetype and like a
22083         class if it's a class.
22084
22085 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22086
22087         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22088         stack. Fixes #64674.
22089
22090         * exceptions.cs: Add test for unwinding of call arguments.
22091
22092 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22093
22094         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22095         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22096         set the carry/borrow flag). The sparc and s390 implementations
22097         can now use optimized versions (and simplify the code). ppc bugfixes.
22098
22099 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22102
22103 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22104
22105         * inssel-amd64.brg: Remove leftover 32 bit rule.
22106
22107         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22108
22109 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22110
22111         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22112         mono_arch_find_jit_info functions into a new function. Fix a memory
22113         leak.
22114
22115         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22116         refactored code.
22117         
22118 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22119
22120         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22121         as well.
22122         
22123         * exceptions.cs: Add array size tests.
22124
22125         * mini.c: Allocate a separate icall wrapper for each arity of 
22126         mono_array_new_va. Fixes #59509.
22127
22128         * exceptions.cs: Add testcase for 64578.
22129
22130         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22131
22132         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22133         
22134 2004-09-02  Martin Baulig  <martin@ximian.com>
22135
22136         * mini.c (mono_method_to_ir): When initializing the locals, call
22137         handle_initobj() on the generic instance itself, not its
22138         underlying type.
22139
22140 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22141
22142         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22143         MonoJitInfo for dynamic methods.
22144
22145         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22146
22147         * mini.c: Add support for freeing JIT data for dynamic methods.
22148         
22149 2004-09-01  Martin Baulig  <martin@ximian.com>
22150
22151         * mini-x86.c (is_regsize_var): Added support for generic
22152         instances.
22153         (mono_arch_emit_prolog): Make this compile again, use
22154         `x86_push_imm_template (code)'.
22155
22156 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22157
22158         * mini-x86.c: make all push_imm instructions that get
22159         patched always emit the long form
22160
22161 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22162
22163         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22164         in a per-domain hash.
22165
22166         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22167         types.
22168
22169 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22170
22171         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22172         work.
22173         
22174         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22175         work.
22176
22177         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22178         Beginnings of SSE2 support.
22179
22180         * exceptions.cs: Add more tests for checked int<->uint casts.
22181
22182 2004-08-28  Martin Baulig  <martin@ximian.com>
22183
22184         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22185         generic instances.
22186
22187         * mini.c
22188         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22189         Handle generic instances recursively.
22190
22191 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22192
22193         * iltests.il: test for conv.u8 on a constant
22194
22195 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22196
22197         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22198         LCONV_x4 (shrun_32 (membase)).
22199
22200 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22201
22202         * inssel-x86.brg: c&p rules for push/setret of long
22203
22204 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22205
22206         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22207         compare (regvar, base)
22208
22209         * inssel-x86.brg: more burg love
22210
22211         * inssel.brg: more cleanup
22212
22213         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22214
22215 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22216
22217         * basic-long.cs, basic-calls.cs: new tests for optimization.
22218
22219 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22220
22221         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22222         patch.
22223
22224 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22225
22226         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22227         
22228 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22229
22230         * inssel.brg (mini_emit_memcpy): use 
22231         NO_UNALIGNED_ACCESS to disable memcpy optimization
22232
22233 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22234
22235         * mini-amd64.c: Handle generic types in various places.
22236
22237         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22238
22239 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22240
22241         * mini.c (handle_box): Fix warning.
22242
22243         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22244
22245         * mini-amd64.h: Enable the emit_state optimization.
22246
22247         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22248
22249         * mini-amd64.c: Add some new 64 bit peephole opts.
22250
22251         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22252
22253         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22254
22255         * mini-amd64.c: Register allocator fixes.
22256
22257         * mini.c: Add an optimization to emit_state to avoid allocation of new
22258         registers on some platforms.
22259
22260 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22261
22262         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22263
22264         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22265         allocation. Fixes #63085.
22266
22267         * basic-long.cs: Add new regression test.
22268
22269         * mini-amd64.c: Register allocator improvements.
22270
22271 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22272
22273         * mini-amd64.c (read_tls_offset_from_method): Add another code
22274         sequence.
22275
22276         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22277         instruction sequence for nullifying class init trampolines.
22278
22279         * objects.cs: Add new regalloc test.
22280
22281         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22282
22283 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22284
22285         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22286         
22287         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22288         arguments.
22289
22290         * driver.c: Fix profiling after TLS changes.
22291         
22292         * driver.c (mono_main): Set mono_stats.enabled if needed.
22293
22294         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22295         CEE_BOX.
22296
22297 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22298
22299         * mini-x86.c: use a 1 op rather than a 2 op tls access
22300         instruction -> faster.
22301
22302 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22303
22304         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22305         x86 backend.
22306
22307 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22308
22309         * exceptions-sparc.c (throw_exception): fix typo
22310
22311 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22312
22313         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22314         set tree->dreg correctly with tls. Allow any
22315         register to be used.
22316
22317         * mini-x86.c (read_tls_offset_from_method): add new code
22318         generation pattern seen with GCC.
22319
22320
22321 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22322
22323         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22324         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22325         exceptions-sparc.c: fix some performance issues in exception
22326         handling and setting of the stack trace for exceptions that were
22327         already thrown.
22328
22329 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22330
22331         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22332         x86 backend.
22333         
22334         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22335         registers.
22336
22337 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22338
22339         This patch inlines tls access, when possible.
22340         
22341         * mini.h: new arch functions for TLS intrinsics.
22342         All platforms updated with a stub.
22343
22344         * mini.c: use the new intrinsics
22345
22346         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22347         arch specific intrinsic for tls variables
22348
22349 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22350
22351         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22352         under windows.
22353
22354 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22355
22356         * mini.c: thread local allocation
22357
22358 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22359
22360         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22361
22362         * Makefile.am: Link against the static version of libmonogc.
22363         
22364         * Makefile.am: Link the static versions of the convenience libraries
22365         into the mono executable.
22366
22367         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22368
22369 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22370
22371         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22372         on integer overflow.
22373
22374         * mini-amd64.c: Reorganize function call code.
22375
22376         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22377
22378 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22379
22380         * inssel-x86.brg: use xor eax,eax.
22381         
22382         * basic.cs: new tests
22383
22384 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22385
22386         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22387         in exception throwing code.
22388         
22389 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22390
22391         * inssel-x86.brg: use xor esi,esi.
22392
22393 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22394
22395         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22396         can trace methods compiled during mini_init () too.
22397
22398         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22399         CEE_CONV_U4.
22400
22401 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22402
22403         * Makefile.am: static link on x86 (r=zoltan)
22404
22405 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22406
22407         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22408         code since it causes some programs to fail.
22409
22410 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22411
22412         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22413
22414 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22415
22416         * mini.c: ovfops_op_map - add STACK_OBJ case for
22417         CONV_I 
22418         * basic.cs: add test_0_pin_string as test
22419         case for above.
22420
22421 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22422
22423         * Makefile.am: build C# if srcdir != builddir
22424
22425 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22426
22427         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22428         fall-through blocks.
22429
22430 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22431
22432         * driver.c: enable loop by default again and include abcrem in -O=all.
22433
22434 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22435
22436         * iltests.il: Add some localloc tests.
22437
22438         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22439
22440         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22441         Fixes #62574.
22442
22443         * inssel-amd64.brg: Add some optimizations.
22444
22445         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22446         for gcc-3.4.
22447
22448         * Makefile.am: Statically link mono against libmono on AMD64.
22449         
22450         * mini-amd64.c inssel-amd64.brg: Optimizations.
22451
22452 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22453
22454         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22455
22456         * tramp-amd64.c: Patch calling code in trampolines.
22457
22458 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22459
22460         * mini-amd64.c: pinvoke struct passing fixes.
22461
22462 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22463
22464         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22465         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22466
22467 2004-08-05  Duncan Mak  <duncan@ximian.com>
22468
22469         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22470         CEE_LDELEM_ANY.
22471
22472 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22473
22474         * mini-amd64.c (emit_move_return_value): Move return value for normal
22475         calls too.
22476
22477 2004-08-05  Martin Baulig  <martin@ximian.com>
22478
22479         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22480         `type->type'; just modify `type' itself when dealing with enums
22481         and generic instances.
22482         (check_call_signature): Make `simple_type' a `MonoType *'.
22483
22484 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22485
22486         * mini.c: Use OP_PADD to add offsets to addresses.
22487
22488         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22489
22490 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22491
22492         * mini-sparc.c (mono_arch_emit_epilog): fix check
22493         for folding last op into restore instruction
22494
22495 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22498         helper methods using the code manager.
22499         
22500         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22501
22502         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22503
22504 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22505         
22506         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22507           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22508
22509         * mini-s390.c: fix tail processing
22510
22511 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22512
22513         * mini-ppc.c: mul.ovf.un exception name fix.
22514
22515 2004-08-03  Martin Baulig  <martin@ximian.com>
22516
22517         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22518         instances; before jumping to `handle_enum', also modify `ptype'.
22519
22520 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22521
22522         * cpu-sparc.md: fcall maximal length too small.
22523
22524 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22525
22526         * mini-amd64.c mini.h: Add initial support for passing/returning 
22527         structures to/from pinvoked methods.
22528
22529 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22530
22531         * mini-ppc.c: reg allocator fix.
22532
22533 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22534
22535         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22536
22537         * inssel.brg: Optimize memset on 64 bit machines.
22538
22539         * mini-amd64.c: Fix some vararg cases.
22540
22541 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22542
22543         * mini-s390.c: Corrected macro in emit_float_to_int
22544
22545         * s390-abi.cs: Tests to exercise the s390 ABI
22546
22547 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22548
22549         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22550         caller saved regs.
22551
22552         * basic.cs: Add a test for add.ovf.un.
22553
22554 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22555
22556         * mini-sparc.c: add case for OP_IDIV_UN
22557
22558 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22559
22560         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22561         
22562         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22563
22564 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22565
22566         * basic.cs: regression tests.
22567
22568         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22569         regressions.
22570
22571 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22572
22573         * basic.cs: Add a new test.
22574
22575         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22576         and AOT. Various fixes and optimizations.
22577
22578         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22579
22580 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22581
22582         * mini-ppc.c: make sure temp regs are not used for global reg
22583         allocation.
22584
22585 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22586
22587         * cpu-sparc.md: conv_i8 fix for 64bits
22588
22589         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22590
22591 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22592         
22593         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22594         add opcode for cmp BYTE PTR [eax], imm.
22595
22596         * inssel.brg: Make memcpy and memset takes bases.
22597
22598 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22599
22600         * *-amd64.*: More AMD64 work.
22601         
22602 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22603
22604         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22605         add a compare-not-equal opcode.
22606         
22607 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22608
22609         * mini.c: Use mono_init_from_assembly instead of mono_init.
22610         
22611 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22612
22613         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22614
22615         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22616
22617         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22618
22619         * inssel.brg: 64 bit fixes.
22620
22621         * mini.h (MonoCallInst): Add some AMD64 specific data.
22622
22623         * mini.h: Add some OP_P opcodes.
22624
22625 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22626
22627         * basic.cs: tests for 61797 and 61740
22628
22629 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22630
22631         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22632         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22633
22634 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22635
22636         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22637
22638         * *-amd64*.*: Ongoing AMD64 work.
22639
22640 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22641
22642         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22643
22644         * *-amd64*: Ongoing AMD64 work.
22645
22646         * mini-arch.h: Add AMD64 support.
22647
22648         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22649
22650         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22651
22652         * mini-ops.h: Add new opcodes.
22653
22654         * Makefile.am: Add AMD64 support.
22655
22656         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22657         rules into the inssel-long*.brg files.
22658
22659         * *-amd64.*: Add beginnings of AMD64 backend.
22660
22661 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22662
22663         * mini.c (print_dfn): commenting out the code that prints
22664         the cil. With -O=deadce, this makes -v -v crash.
22665         
22666         * cpu-pentium.md: make checkthis have a length of 2
22667
22668 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22669
22670         * mini-sparc.h: fix implementations of __builtin
22671         functions for Sun compiler for V9.
22672
22673 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22674
22675         * mini.c: use the new stelem.ref wrapper
22676         * exceptions.cs, arrays.cs: new stelem.ref tests
22677
22678 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22679
22680         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22681         new XSP should work with these changes).
22682
22683 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22684         
22685         * inssel-{long32,x86,}.brg: trivial optimizations.
22686         
22687 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22688
22689         * mini.c: load value when emitting box operation in
22690         constrained calls.
22691
22692 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22693
22694         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22695         is one byte shorter than cmp DWORD PTR [eax], 0.
22696
22697 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22698
22699         * inssel-ppc.brg: arguments on the stack are always
22700         relative to the stack pointer (spotted by Neale Ferguson).
22701
22702 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22703
22704         * exceptions-x86.c: delay appending the method name to the trace until
22705         after mono_jit_info_table_find is called, as this gets the real
22706         MonoMethod.
22707
22708 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22709
22710         * aot.c: register roots
22711
22712 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22713
22714         * aot.c : I could just use PLATFORM_WIN32 flag.
22715
22716 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22717
22718         * aot.c : Reverting the previous fix. This time it broke linux build.
22719
22720 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22721
22722         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22723
22724 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22725
22726         * mini.c (handle_stack_args): Remove some more debugging code.
22727         
22728         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22729
22730         * driver.c mini.h aot.c: Allow additional options to be specified with
22731         --aot and pass them to mono_compile_assembly.
22732
22733         * aot.c: Add experimental code to AOT compile all loaded assemblies
22734         on demand and save the code into a cache in the filesystem.
22735
22736         * aot.c: Add support for more wrapper methods.
22737         
22738         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22739         58863.
22740
22741         * cpu-*.md: Remove removed opcodes.
22742
22743         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22744         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22745         related icalls to marshal.c.
22746
22747 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22748
22749         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22750
22751         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22752
22753         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22754
22755 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22756         * liveness.c: If liveness is recomputated we need to reset the information
22757         for each variable. This way, if the liveness range has been narrowed
22758         by optimizations that happened after the last computation, we can return
22759         a smaller range.
22760         
22761         For example, if you have
22762         
22763         {
22764                 int i = 0;
22765                 
22766                 // Tons of code that does not affect i
22767                 
22768                 i = foo ();
22769                 ...
22770         }
22771         
22772         i = 0 is dead code and will be removed by SSA. However, when
22773         linear scan gets to the code, i will still appear to be live
22774         throughout the entire block. This prevents good register allocation.
22775
22776 2004-07-06  Martin Baulig  <martin@ximian.com>
22777
22778         * debug-mini.c (mono_debug_init_method): Allow
22779         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22780         (mono_debug_add_icall_wrapper): New method.
22781
22782         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22783
22784 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22785
22786         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22787         optimization.
22788
22789 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * aot.c (mono_aot_load_method): Fix loading of debug info.
22792
22793 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22794
22795         * aot.c: Add logging support.
22796
22797 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22798
22799         * mini.h: Add prototype for mono_print_method_from_ip.
22800
22801         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22802
22803         * inssel.brg: 64 bit fixes.
22804
22805         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22806         inssel-long32.brg.
22807
22808         * Makefile.am: Add SPARC64 support.
22809
22810 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22811
22812         * aot.c: Fix alignment problems on 32 bit platforms.
22813
22814 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22815
22816         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22817         SPARC64.
22818
22819         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22820         problems.
22821
22822         * mini.h: Bump AOT file version. Some 64 bit fixes.
22823
22824 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22825
22826         * inssel-sparc.brg: Add new rule to avoid register moves.
22827
22828         * inssel.brg: Add ldind_to_load_membase helper function.
22829
22830 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22831
22832         * mini.c: OffsetToStringData intrinsic.
22833         
22834 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22835
22836         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22837
22838         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22839         regression tests.
22840
22841         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22842 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22843
22844         * mini.c: reinstated mono_compile_get_interface_var()
22845         on x86, too, since the change breaks the Gtk# build there as well.
22846
22847 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22848
22849         * driver.c: remove loop from the default optimizations: it seems to
22850         interact badly with some of the other options (see bug #60613).
22851
22852 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22853
22854         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22855         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22856
22857 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22858
22859         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22860         vararg-using methods.
22861
22862 2004-06-21  Martin Baulig  <martin@ximian.com>
22863
22864         * mini/mini-exceptions.c
22865         (mono_handle_exception): Added `gpointer original_ip' argument.
22866         After calling mono_unhandled_exception(), call
22867         mono_debugger_unhandled_exception() and if that returns true,
22868         restore the context and return.
22869
22870 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22871
22872         * mini-ppc.c: prefer the use of relative branches so
22873         they won't need to be patched in aot code (patch from Patrick Beard).
22874
22875 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22876
22877         * aot.c: patch from Patrick Beard to make the output assembly
22878         more correct for the MacOSX assembler. Small tweak to
22879         generate sane images on Linux/PPC, too.
22880
22881 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22882
22883         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22884         case until bug #59509 is fixed (shows up in #60332).
22885
22886 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22887
22888         * mini.c: make sure the needed wrappers are compiled, too, with
22889         precomp.
22890
22891 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22892
22893         * driver.c: remove NPTL reference in --version output.
22894
22895 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22896
22897         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22898         generate valid assembly for the Mach-O assembler.
22899
22900 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22901
22902         * driver.c: don't include abcrem in the all optimization specifier
22903         since it slows down jit compilation too much for now.
22904
22905 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22906
22907         * mini.c: use BIGMUL only if both operands have the same signage.
22908         * iltests.il: Test for bug 60056. (errors related to signage in
22909         BIGMUL).
22910
22911         r=lupus.
22912
22913 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22914
22915         * mini.c, aot.c: memory leak fixes.
22916
22917 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22918
22919         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22920
22921 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22922
22923         * Makefile.am: remove the -static hack completely, it links in
22924         statically glib as well.
22925
22926 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22927
22928         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22929         * exceptions.cs: make it compile with new mcs/csc.
22930
22931 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22932         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22933         and added relevant test case.
22934
22935 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22936
22937         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22938         regressions in gtk-sharp.
22939
22940 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22941
22942         * exceptions.cs: New regression tests.
22943
22944         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22945
22946 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22947
22948         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22949
22950 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22951
22952         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22953
22954         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22955
22956 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22957
22958         * mini.c (mono_jit_runtime_invoke): Init class in this
22959         method instead of trusting mono_jit_compile_method to
22960         do the work (because wrappers can be in object class)
22961
22962 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22963
22964         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22965
22966         * basic-long.cs: New regression test.
22967
22968 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22969
22970         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22971         and div/rem checks.
22972
22973 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22974
22975         * Makefile.am: fix miguel's change to build mono statically against
22976         libmono (track build dependencies).
22977
22978 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22979
22980         * cfold.c: Some glib versions do not have G_MININT32.
22981
22982 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22983
22984         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22985         with precision of tan, atan, sin and cos, and implemented related
22986         regressions tests (fixes bug 54467, but one new problem appeared and
22987         is not fixed yet).
22988
22989 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22990
22991         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22992
22993         * exceptions.cs: Add test for constant folding && division by zero.
22994
22995         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22996         since driver.c is in libmono too, so the optimization was useless.
22997
22998         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22999         variable to driver.c so the compiler can emit more efficient code to
23000         access them.
23001
23002 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23003
23004         * Makefile.am: don't distribute generated inssel.[ch] files.
23005
23006 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23007
23008         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23009         into the default appdomain. Fixes #58707.
23010
23011         * jit-icalls.c: Remove the broken approximation for truncl, doing
23012         no conversion is better.
23013
23014         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23015         Fixes #58863.
23016
23017 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23018
23019         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23020         of the mcrxr instruction which is not available on some processors
23021         even if it's documented to be. Implement add and sub overflow correctly
23022         (still not complete for long unsigned). Speed up icalls a bit.
23023
23024 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23025
23026         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23027         we run .cctor in the current domain instead of target_domain.
23028         
23029         Fixes bug #58558, .cctor not being called in -O=shared.
23030
23031 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23032
23033         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23034
23035 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23036
23037         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23038         which can be done with an imm8, do it that way.
23039         (mono_arch_output_basic_block): ditto for a jmp
23040         (mono_arch_emit_prolog): Computate maximum offset of a label.
23041
23042 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23043
23044         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23045         now tries to allocate prefered physical reg's for virtual
23046         regs. This reduces the number of emited spills/loads with
23047         20-30% on our core assemblies.
23048
23049 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23050
23051         * jit-icalls.c: truncl() is not needed and trunc() is
23052         the correct thing to do anyway (bug #58287).
23053
23054 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23055
23056         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23057         if available.
23058
23059 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23060
23061         * driver.c: enable loop optimizations by default.
23062
23063 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23064
23065         * mini-x86.c: fix calc of max loop size when aligning loops start.
23066
23067 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23068
23069         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23070         the stack.
23071
23072 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23073
23074         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23075         should set carry.
23076
23077         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23078
23079         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23080         
23081         * mini.c (inline_method): Allways inline some wrappers even if the cost
23082         is too large. Fixes #58785.
23083
23084         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23085         
23086 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23087
23088         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23089         (crichton@gimp.org). Beginning of support for sparc/linux.
23090
23091         * mini-sparc.c: Optimize retrieval of LMF address.
23092
23093 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23094
23095         * exceptions-ppc.c:  handle alloca in methods with clauses.
23096
23097 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23098
23099         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23100
23101 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23102
23103         * mini.c: Delegate most of the abort signal work to 
23104           mono_thread_request_interruption, which also handles Stop and Suspend
23105           states.
23106
23107 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23108
23109         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23110         supports the save/restore lmf opcodes.
23111
23112 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23113
23114         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23115         by gcc-3.4 as well.
23116
23117         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23118
23119 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23120
23121         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23122         methods which contain array accesses.
23123
23124         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23125         boundaries. Fixes #58537.
23126
23127         * iltests.il: Add regression test for #58537.
23128
23129 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23130
23131         * mini-x86.c (mono_arch_local_regalloc): Last part of
23132         fix for bug #58633 (releasing register to early).
23133
23134 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23135
23136         * basic-long.cs: Add new regression test.
23137
23138 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23139
23140         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23141         register too early on the chain.
23142
23143 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23144
23145         * mini.c (create_helper_signature): Use a helper function to reduce
23146         the code which needs to be written. Also set the calling convention of
23147         icalls on windows. Fixes #57840.
23148
23149 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23150
23151         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23152         exceptions-ppc.c: added helper function to get the instruction address
23153         from a signal handler context.
23154
23155 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23156
23157         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23158         from gonzalo.
23159
23160 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23161
23162         * helpers.c: Add new env variable to pass args to objdump.
23163         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23164
23165 2004-05-17  Radek Doulik  <rodo@ximian.com>
23166
23167         * Makefile.am (common_sources): added abcremoval.h so it get
23168         disted and daily mono packages on go-mono.com will build again
23169
23170 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23171
23172         * abcremoval.c: Fixed coding style, added copyright header.
23173
23174         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23175
23176         * mini.h: Added prototype for abc removal main function.
23177
23178         * build_relations_propagation_table.pl: Added copyright header.
23179
23180 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23181
23182         * basic-long.cs: reg test for complex ceq_long bug.
23183
23184 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23185
23186         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23187         reg in long and clob case (bug #58343). Fixed/added comments.
23188
23189 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23190
23191         * mini.c (mono_jit_runtime_invoke): Follow new convention
23192         of calling the invoke method with an function pointer.
23193
23194 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23195
23196         * ChangeLog: Fix author of memory leak patch.
23197
23198 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23199
23200         * Makefile.am: fix make dist as well...
23201
23202
23203 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23204
23205         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23206         on archs where pointers are 4 bytes long.
23207
23208         * Makefile.am: Added abcremoval.c source file.
23209
23210         * abcremoval.c: Added abcremoval.c.
23211
23212         * abcremoval.h: Added abcremoval.h.
23213
23214         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23215
23216         * inssel.brg: Enabled bounds check removal.
23217
23218         * mini.c: Added support for abcrem optimization.
23219
23220         * mini.h: Added abcrem optimization label.
23221
23222         * driver.c: Added support for abcrem optimization.
23223
23224         * propagated_relations_table.def: Added propagated_relations_table.def.
23225
23226 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23227
23228         * mini.c, cfold.c: fix style.
23229
23230 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23231
23232         * mini.c: handle issue with the low-level implementation of
23233         some long opcodes (bug #54209).
23234
23235 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23236
23237         * basic.cs: test for my new cmov stuff.
23238
23239 2004-05-13      Patrik Torstensson
23240
23241         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23242         opt and added peephole documentation.
23243
23244 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23245
23246         * tramp-ppc.c: rewrote the generic trampoline code.
23247
23248 2004-05-11      Patrik Torstensson
23249
23250         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23251
23252 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23253
23254         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23255
23256         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23257         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23258
23259         * mini.c: Add new icalls for AsAny marshalling.
23260
23261 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23262
23263         * tramp-ppc.c, mini-ppc.c: more cleanups.
23264
23265 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23266
23267         * mini.c: no warnings.
23268
23269 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23270
23271         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23272
23273 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23274
23275         * mini.c: In the thread abort signal handler, if the thread is in the
23276         process of being stoped, don't throw the Abort exception, just stop the
23277         thread.
23278
23279 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23280
23281         * tramp-ppc.c: removed old code.
23282
23283 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23284
23285         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23286         do some simple speed optimizations on ppc.
23287
23288 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23289
23290         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23291         and large offsets in load/store.
23292
23293 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23294
23295         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23296         it causes regressions.
23297
23298 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23299
23300         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23301         support.
23302
23303 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23304
23305         * jit-icalls.c: remove warnings.
23306         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23307         speedups for unsafe code.
23308
23309 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23310
23311         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23312
23313 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23314
23315         * basic-calls.cs: Add new regression test.
23316
23317         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23318         more portable.
23319
23320         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23321
23322         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23323         is no longer used.
23324
23325 2004-05-06      Patrik Torstensson
23326
23327         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23328         long reg allocation in any reg (not only eax:edx) and implemented 
23329         long shl/shr ops in asm instead of helpers.
23330
23331 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23332
23333         * mini-sparc.h: Fix warnings.
23334
23335         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23336         stack.
23337
23338         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23339         separate statement for clarity.
23340
23341         * mini-sparc.c: Update status.
23342
23343 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23344
23345         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23346         here.
23347
23348 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23349
23350         * inssel-ppc.brg: another small pre-release workaround:
23351         we don't do overflow detection for long_sub_un.
23352
23353 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23354
23355         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23356         (also works around a weird ppc bug: 57957).
23357
23358 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23359
23360         * tramp-ppc.c: trampoline fixes.
23361
23362 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23363
23364         * mini-ppc.c: fixed typos.
23365
23366 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23367
23368         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23369         at the top of the stack. Fixed typos. Use a frame registers
23370         for all the methods with exception clauses.
23371
23372 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23373
23374         * exceptions-ppc.c: restore fp registers.
23375
23376 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23377
23378         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23379         order from the stack top (moved the stack room to save the
23380         return value for trace after the param area). Fixed corruption
23381         in restoring registers on unwind.
23382
23383 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23384
23385         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23386
23387 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23388
23389         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23390         and prolog/epilog for methods that use it. Allow
23391         enough param area room for varargs methods. Fix miguel's
23392         breakage in exception handling.
23393
23394 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23395
23396         * Makefile.am: run genmdesc only on current arch.
23397
23398 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23399
23400         * exceptions-x86.c:
23401         * mini-x86.h: fix the build on windows.
23402
23403 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23404
23405         * 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.
23406
23407         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23408
23409         * mini-exceptions.c: New file.
23410         
23411         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23412         Move some parts of the x86 exception handling code to an 
23413         arch-independent file so it can be shared with other ports.
23414
23415 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23416
23417         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23418
23419 2004-04-26  David Waite  <mass@akuma.org>
23420
23421         * driver.c: remove comma from end of enumeration declaration
23422
23423 2004-04-26  Jackson Harper  <jackson@ximian.com>
23424
23425         * driver.c: parse config file before loading first assembly. This
23426         allows the user gac to be enabled/disabled. 
23427         
23428 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23429
23430         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23431         simpler mechanism: we do not care what is encoded initially
23432         (branch absolute or relative), we care about the code and its
23433         target.  I kept the old code for reference for now.
23434
23435         The new code tries first to determine if the jump is anywhere in
23436         the -/+32 absolute meg range, if it succeeds, it encodes using the
23437         absolute branch;  If not, it tried to find something in the
23438         relative range, if not, it uses the handle_thunk code. 
23439
23440 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23441
23442         * exceptions-ppc.c: use the correct ip register on macosx.
23443
23444 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23445
23446         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23447
23448 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23449
23450         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23451         Raise exception on integer divide by zero by hand since the hw
23452         doesn't support it. Handle NaNs in FP compares.
23453
23454 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23455
23456         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23457         code reducing duplication between the platforms and enabled
23458         signal exception handling (on linux for now).
23459
23460 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23461
23462         * exceptions-ppc.c: more macosx support.
23463
23464 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23465
23466         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23467
23468 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23469
23470         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23471
23472 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23473
23474         * iltests.il: more tests.
23475
23476 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23477
23478         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23479         vars as well.
23480
23481 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23482
23483         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23484
23485 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23486
23487         * liveness.c: Mark variables as volatile in all basic blocks reachable
23488         from exception clauses.
23489
23490 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23491
23492         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23493         inlining.
23494
23495 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23496
23497         * iltests.il, basic.cs: more tests for regalloc.
23498
23499 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23500
23501         * iltests.il: Some tests for register allocation modifications
23502         I have locally.
23503
23504 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23505
23506         * exceptions.cs: Add regression test for bug #56782.
23507
23508         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23509         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23510         the beauty of fixing the same thing in 5 different files...
23511
23512 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23513
23514         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23515         methods.
23516
23517 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23518
23519         * mini.c: Add support for STRWLPARRAY marshalling convention.
23520
23521 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23522
23523         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23524         to init the context to setup the regs pointer).
23525
23526 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23527
23528         * exceptions-ppc.c: more exceptions work.
23529
23530 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23531
23532         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23533         not allowed.
23534
23535 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23536
23537         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23538         can use the memory directly.
23539
23540         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23541
23542         add x86_add_membase, x86_sub_membase, x86_mul_membase
23543
23544 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23545
23546         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23547         GENERAL_REGS they were also hardcoded for all PPC ports.
23548
23549         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23550
23551         Remove hard-coded limit for floating point registers, use
23552         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23553
23554         Notice that in MacOS X calling conventions you can fit a lot more
23555         floating point values in registers, so I should update the PInvoke
23556         test to excercise the passing of floating point values on the
23557         stack (currently broken).
23558         
23559 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23560
23561         * tramp-ppc.c (create_trampoline_code): Added
23562         JUMP_TRAMPOLINE_SIZE. 
23563         (ppc_magic_trampoline): Follow the pattern from
23564         x86_magic_trampoline: if code is set to zero, return. 
23565         (create_trampoline_code): Always pass MonoMethod to the jump
23566         trampoline, before it was passing a null.
23567         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23568         share the code with mono_arch_create_jit_trampoline. 
23569
23570         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23571         implemented.
23572         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23573         implemented.  
23574
23575         * cpu-g4.md: Added length for jmp instruction, the worst case
23576         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23577         for save_lmf).
23578
23579 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23580
23581         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23582
23583 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23584
23585         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23586         before each IL instruction.
23587
23588         * mini.c (CEE_BOX): Fix warnings.
23589
23590 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23591
23592         * mini.c: removed a few unused vars and extra whitespace.
23593
23594 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23595
23596         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23597         checks.
23598         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23599         index.
23600         (OP_GETCHR): use the above
23601         (CEE_LDELEMA): use the above.
23602
23603         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23604         version of the generic impl.
23605         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23606         (CEE_LDELEMA): use the above.
23607
23608 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23609
23610         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23611         Fixes #56317.
23612
23613         * iltests.il: Added new regression test for #56317.
23614
23615 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23616
23617         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23618         under NetBSD. Fixes #56450.
23619
23620         * liveness.c (update_gen_kill_set): Fix previous patch.
23621
23622 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23623
23624         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23625
23626 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23627
23628         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23629         ldsfld and ldsflda.
23630
23631         * inssel-sparc.brg: Add more optimizations.
23632
23633         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23634
23635 2004-04-01  Martin Baulig  <martin@ximian.com>
23636
23637         * mini.c (handle_box): New static function; moved the
23638         implementation of CEE_BOX here.
23639         (mono_method_to_ir): Added `constrained_call' variable.
23640         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23641         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23642         mono_method_get_constrained() to get the method.
23643
23644 2004-04-01  Martin Baulig  <martin@ximian.com>
23645
23646         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23647         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23648         (mono_method_to_ir): We don't need these macros anymore since
23649         mono_class_get_full() already takes care of it. 
23650
23651 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23652
23653         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23654         use @function (as doesn't accept #function here) and check the return
23655         value of system and stop if fails.
23656
23657 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23658
23659         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23660
23661 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23662
23663         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23664
23665         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23666
23667         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23668         #56223.
23669
23670         * basic-long.cs: Add test for negation of Int64.MinValue.
23671
23672 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23673
23674         * mini-sparc.c: Update status.
23675
23676         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23677
23678         * exceptions-sparc.c: Fix return value in filters.
23679
23680         * inssel-sparc.brg: Fix register allocation in some rules.
23681
23682 2004-03-28  Martin Baulig  <martin@ximian.com>
23683
23684         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23685         if neccessary.  
23686
23687 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23688
23689         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23690         
23691         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23692         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23693         remove unused conv_u4 opcode.
23694
23695         * mini-x86.c: Remove valgrind workaround since it slows down things
23696         even when mono is not run under valgrind.
23697
23698 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23699
23700         * mini-sparc.c: Update status.
23701
23702         * inssel-sparc.brg: Add some optimizations.
23703
23704         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23705         future delay slot filling. Add support for varargs, tail calls and JMP.
23706
23707         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23708         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23709
23710         * inssel.brg: Fix register allocation in OP_ARGLIST.
23711
23712         * inssel.brg: Fix warnings.
23713
23714 2004-03-25  Martin Baulig  <martin@ximian.com>
23715
23716         * mini.c (inflate_generic_field): Removed.
23717         (mini_get_method): Removed, use mono_get_method_full(),
23718         (mini_get_class): Removed, use mono_class_get_full().
23719         (mono_method_to_ir): Pass our generic context to
23720         mono_field_from_token().        
23721
23722 2004-03-25  Martin Baulig  <martin@ximian.com>
23723
23724         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23725         of a `MonoMethod *'.
23726         (mini_get_method): Take a `MonoGenericContext *' instead
23727         of a `MonoMethod *'.
23728         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23729         a new local variable called `generic_context' which holds the
23730         current `MonoGenericContext *'; use it to lookup things.
23731
23732 2004-03-24  Martin Baulig  <martin@ximian.com>
23733
23734         * mini.c (mini_get_class): New static method; if we're inside a
23735         generic instance, inflate the class if neccessary.
23736         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23737
23738 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23739
23740         * iltests.il: New regression test for #55976.
23741
23742         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23743         #55976.
23744
23745 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23746
23747         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23748         output.
23749
23750 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23751
23752         * liveness.c: Consider SSA stores as well as loads when making vars
23753         volatile.
23754
23755         * exceptions.cs: New regression tests for register allocation.
23756         
23757 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23758
23759         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23760         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23761           domain lock only to protect puntual access to data structures.
23762           Added access lock for sighash, jit_icall_hash_name, 
23763           jit_icall_hash_addr and domain->code_mp.
23764
23765 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23766
23767         * driver.c: Print SIGSEGV handling method.
23768
23769         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23770
23771         * mini.c (setup_jit_tls_data): Handle case when this is called
23772         multiple times for a thread.
23773
23774         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23775         is different from fbxx_un. Fixes #54303. Also use constants instead of
23776         magic numbers in a lot of places.
23777
23778 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23779
23780         * exceptions.cs: Fix cctor test when --regression is used.
23781
23782 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23783
23784         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23785         for Linux/ppc.
23786
23787 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23788
23789         * inssel-ppc.brg: fixed register assignments for some rules.
23790
23791 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23792
23793         * exceptions.cs: Add test for exceptions in static constructors.
23794
23795         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23796         static constructors outside the domain lock. Fixes #55720.
23797
23798 2004-03-17  Martin Baulig  <martin@ximian.com>
23799
23800         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23801         (inflate_generic_field): Take the `MonoMethod *' instead of the
23802         `MonoClass *' and added support for generic method.
23803         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23804         have a `field->parent->gen_params', only inflate the field if it's
23805         an open constructed type.
23806
23807 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23808
23809         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23810         exception object instead of the preconstructed ones.
23811
23812 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23813
23814         * mini.c: reverted changed to sigsegv_signal_handler commited
23815         accidentally in the previous patch.
23816
23817 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23818
23819         * mini.c:
23820         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23821         running --aot with an old assembly.
23822
23823 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23824
23825         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23826         point values.
23827
23828         * mini-sparc.c: Add support for v9 branches with prediction.
23829
23830 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23831
23832         * mini.c (mini_init): #warning is GNUC only
23833
23834         * mini-sparc.h: implement __builtin_frame_address
23835         and __builtin_return_address for Sun C compiler
23836
23837 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23838
23839         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23840
23841 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23842
23843         * basic-calls.cs: Add test for unaligned byref long argument passing.
23844
23845         * mini-ops.h: Add sparcv9 compare and branch instructions.
23846
23847         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23848         v9 instructions if we have a v9 cpu.
23849
23850         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23851         registers for global allocation.
23852
23853         * exceptions-sparc.c: Fixes.
23854         
23855 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23856
23857         * liveness.c (mono_analyze_liveness): Optimized version.
23858
23859         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23860
23861         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23862         sparc work.
23863
23864         * basic-float.cs basic-calls.cs: New regression tests.
23865
23866 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23867
23868         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23869         sigaltstack implementation.
23870
23871         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23872         
23873         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23874         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23875
23876 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23877
23878         * mini.c: Fix warnings.
23879         
23880         * mini.c (mono_resolve_patch_target): New function which contains the
23881         arch independent part of the patching process.
23882
23883         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23884         patching code to a separate function.
23885
23886 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23887
23888         * mini.c (add_signal_handler): ifdef out on Windows
23889
23890 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23891
23892         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23893         cpu-sparc.md: Add exception handling support + other fixes.
23894
23895         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23896         typed GC detection in --version.
23897
23898         * basic.cs exceptions.cs: New regression tests.
23899
23900         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23901         the arch specific code can store data during a compilation.
23902
23903         * mini-ops.h: Add OP_SETFRET.
23904
23905         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23906         function, register a separate icall for each arity, so the icalls can
23907         get a wrapper.
23908         
23909         * mini.c (mono_print_tree): Print negative offsets in a more readable
23910         form.
23911         
23912         * mini.c: Make signal handling work on sparc.
23913         
23914         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23915
23916         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23917
23918         * jit-icalls.c: Emulate truncl by aintl on solaris.
23919
23920         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23921
23922 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23923
23924         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23925
23926 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23927
23928         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23929         a MarshalByRef type, inline a method that performs the check, taking into
23930         account that the object can be a proxy. Also implemented tow new opcodes:
23931         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23932         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23933         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23934
23935 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23936
23937         * mini-ppc.c: if a relative branch displacement is too big
23938         but it points to and area reachable with an absolute branch, 
23939         avoid the thunks.
23940
23941 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23942
23943         * mini.c: optimize small copies in cpblk.
23944
23945 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23946
23947         * basic-calls.cs basic-float.cs: New regression tests.
23948
23949         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23950         negative offsets from %fp. Implement localloc. Fix local register 
23951         allocation. Fix the case when the this argument needs to be saved to
23952         the stack. Implement some missing opcodes.
23953
23954 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23955
23956         * mini.c (mini_method_compile): Reenable global regalloc in methods
23957         with exception handlers.
23958
23959         * linear-scan.c (mono_varlist_sort): Fix warning.
23960
23961         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23962
23963         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23964         regalloc costs.
23965
23966         * liveness.c: Make all variables uses in exception clauses volatile, to
23967         prevent them from being allocated to registers. Fixes #42136.
23968
23969 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23970
23971         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23972         causes regressions.
23973
23974         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23975         argument to mono_arch_regalloc_cost.
23976
23977         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23978         precisely.
23979
23980 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23981
23982         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23983         Make the cost of allocating a variable to a register arch dependent.
23984
23985         * basic-calls.cs: Fix compilation of tests.
23986         
23987         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23988         helper function to cut back on the number of #ifdefs needed.
23989
23990         * mini-ppc.c: Fix compilation.
23991
23992         * basic-calls.cs: New regression tests.
23993
23994         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23995
23996         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23997         of l0 since that is callee saved.
23998
23999         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24000         to virtual calls.
24001
24002         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24003         of delay instruction.
24004
24005         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24006
24007         * mini.h (MonoCallInst): Add 'virtual' flag.
24008
24009         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24010
24011 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24012
24013         * *.cs: New regression tests.
24014
24015         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24016         work.
24017
24018         * mini.c (mono_runtime_install_handlers): Fix build.
24019
24020         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24021         'signal_stack_size' members.
24022
24023         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24024         alternate signal stack.
24025
24026         * exceptions-x86.c: Add stack overflow handling.
24027
24028         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24029         functions to arch independent code.
24030
24031         * mini.c (mono_print_tree): Print more detailed info for load_membase
24032         opcodes.
24033         
24034 2004-02-23  Martin Baulig  <martin@ximian.com>
24035
24036         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24037
24038 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24039
24040         * mini-x86.c: fixed reg allocation for div/rem.
24041
24042 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24043
24044         * driver.c (mono_main): Report some configuratio options on --version.
24045
24046 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24047
24048         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24049         low in the address space. Correctly flush memory in thunks where we
24050         output native code.
24051
24052 2004-02-20  Martin Baulig  <martin@ximian.com>
24053
24054         * mini.c (mini_get_method): New static method; inflate all generic
24055         methods and methods in open generic instances.
24056         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24057         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24058
24059 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24060
24061         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24062
24063         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24064
24065 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24066
24067         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24068
24069         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24070         it compile using Sun's compiler.
24071
24072 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24073
24074         * 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.
24075
24076         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24077
24078 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24079
24080         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24081         code.
24082         * mini-ppc.c: handle calls outside of the allowed range with thunks
24083         allocated using the code manager.
24084         * tramp-ppc.c: use the code manager to hold generated native code.
24085         Fixed the magic trampoline to just patch vtable entries.
24086
24087 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24088
24089         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24090         independent file.
24091
24092 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24093
24094         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24095         PPC.
24096
24097         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24098         if we have a working __thread implementation.
24099
24100         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24101         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24102
24103 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24104
24105         * mini-x86.c: Fix compilation under gcc 2.
24106         
24107 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24108
24109         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24110         contains a call to the wrapped function.
24111
24112         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24113         OP_<CALL>_IMM opcodes, and use them under X86.
24114         
24115         * mini.c (mono_jit_find_compiled_method): Fix warning.
24116
24117         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24118
24119         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24120
24121         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24122         functionality to mini.c.
24123
24124         * mini.c (mono_create_jump_trampoline): New function to create a jump
24125         trampoline. Return a compiled method instead of a trampoline if it
24126         exists. Add a cache for jump trampolines.
24127
24128         * mini.c (mono_jit_find_compiled_method): New function to return a
24129         compiled method if it exists.
24130
24131         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24132         mono_arch_create_jit_trampoline.
24133
24134         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24135         a jump trampoline. Fixes #52092.
24136         
24137 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24138
24139         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24140         which is not up-to-date. Add check_corlib_version () instead.
24141
24142         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24143         have to call it.
24144         
24145         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24146         since newer valgrind versions do not need it.
24147
24148         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24149         compile a method with a given set of optimizations.
24150
24151         * mini.c: Compile icall wrappers on-demand instead of at startup.
24152
24153         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24154         wrapper for an icall.
24155
24156 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24157
24158         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24159         #54063.
24160
24161         * iltests.il: Add test for non-empty stack before switch instruction.
24162
24163 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24164
24165         * mini.c: Add support for new stringbuilder marshalling conventions.
24166
24167         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24168
24169 2004-02-01  Martin Baulig  <martin@ximian.com>
24170
24171         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24172         in `ginst->mtype_argv'.
24173
24174 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24175
24176         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24177         facilitate grepping.
24178
24179 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24180
24181         * mini.c: fixed buglet in initobj generic implementation for references.
24182
24183 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24184
24185         * Makefile.am: make the version script conditional.
24186         * jit-icalls.c: handle missing truncl().
24187
24188 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24189
24190         * exceptions.cs: Add more tests for double->int conversion.
24191
24192         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24193         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24194
24195 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24196
24197         * driver.c: make --verbose --version emit an error
24198         if the loaded corlib doesn't match the runtime version.
24199
24200 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24201
24202         * mini-ppc.h: export ppc_patch().
24203         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24204         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24205         on par or better than on MacOSX.
24206
24207 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24208
24209         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24210         mono_lookup_pinvoke_call.
24211
24212         * mini-x86.c: Under windows, the default pinvoke calling convention is
24213         stdcall. Fixes #52834.
24214
24215         * mini.c (optimize_branches): Add an upper bound to the number of
24216         iterations to prevent infinite loops on strange loops. Fixes #53003.
24217
24218 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24219
24220         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24221         and ISINST. Fixes #52093.
24222
24223         * objects.cs (test_0_vector_array_cast): New tests.
24224         
24225 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24226
24227         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24228         checking in Array.Set ().
24229
24230         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24231         #52590.
24232
24233         * object.cs (test_0_multi_array_cast): New regression test.
24234
24235 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24236
24237         * exceptions-ppc.c: fix build on Linux/PPC.
24238
24239 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24240
24241         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24242         running under valgrind.
24243         (x86_magic_trampoline): Fix build bustage.
24244
24245         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24246         negative values as well. This is needed for the encoding of the line number
24247         info, since sometimes the line numbers are not in increasing order.
24248
24249 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24250
24251         * cpu-pentium.md (localloc): Increase the size of the localloc 
24252         instruction since it is a loop under Win32.
24253
24254         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24255         allocation.
24256
24257 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24258
24259         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24260         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24261         Max Horn (max@quendi.de). Fix file names in comments.
24262
24263 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24264
24265         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24266         avoid stack overflow.
24267         (replace_usage): Avoid uninitialized variable warnings.
24268
24269         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24270         and taking the address of valuetype variables.
24271
24272 2004-01-03  Patrik Torstensson
24273
24274         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24275         for other purposes than FP later on.
24276
24277 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24278
24279         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24280         of tail calls.
24281
24282 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24283
24284         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24285
24286 2003-12-30  Patrik Torstensson <p@rxc.se>
24287
24288         * mini-x86.h: Decreased number of availiable fp regs.
24289         Solves corner cases with FP spilling.
24290
24291 2003-12-23  Patrik Torstensson <p@rxc.se>
24292
24293         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24294         for floating point stack tracking / spilling on x86. 
24295         Fixes bug #49012.
24296         
24297         * basic-float.cs: added float mul overflow test.
24298
24299 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24300
24301         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24302
24303 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24304
24305         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24306         supports for cond branches that overflow the immediate
24307         overflow offset. mcs can compile simple programs.
24308
24309 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24310
24311         * exceptions-ppc.c: exception handling support wip:
24312         finally handlers get run on exception.
24313
24314 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24315
24316         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24317         profiling.
24318
24319 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24320
24321         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24322         initial support for stack walking and unwinding.
24323
24324 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24325
24326         * driver.c (mono_main): Make corlib-out-of-sync message more 
24327         descriptive. Also remove verify_corlib call.
24328
24329 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24330
24331         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24332         not overlap with other call's arguments, too.
24333
24334 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24335
24336         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24337         move to arch-specific code the choice of arch-specific
24338         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24339         * mini.c: ensure emulation calls will not interleave
24340         with other calls.
24341
24342 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24343
24344         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24345         the magic trampoline stack frame is dropped before executing
24346         the new method.
24347
24348 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24349
24350         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24351         and integer to fp conversions. Added support for overflowing
24352         arguments on the stack. Reserve a couple more registers as temps.
24353         Added support for aot compilation (as output still needs to be
24354         tweaked, though).
24355
24356 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24357
24358         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24359         Don't overwrite return register in some corner cases.
24360
24361 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24362
24363         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24364         static constructors when AOT compiling.
24365
24366         * driver.c (mono_main): Call mono_check_corlib_version.
24367
24368 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24369
24370         * cpu-g4.md, basic.cs: fixed div target register.
24371
24372 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24373
24374         * mini-ppc.c, basic.cs: shl_imm fix with test.
24375
24376 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24377
24378         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24379         structures by value. Misc fixes.
24380         * objects.cs: more tests.
24381
24382 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24383
24384         * mini-ppc.c: lconv.ovf.i implemented.
24385
24386 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24387
24388         * mini.c:
24389         (mini_init): don't error out if someone already called g_thread_init.
24390
24391 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24392
24393         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24394         to be any type per the spec. Fix abnormal memory usage when
24395         the same object is repeatedly thrown.
24396
24397 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24398
24399         * mini.c: check for overruns in IL code.
24400
24401 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24402
24403         * TODO: Add/remove some todo entries.
24404
24405 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24406
24407         * driver.c (mono_main): Call mono_verify_corlib.
24408
24409 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24410
24411         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24412         This has been moved to mini.c
24413         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24414         type being casted is marshalbyref it could be a proxy, so instead of
24415         emitting the type check code, emit a call to a runtime method that will
24416         perform the check by calling CanCastTo if needed.
24417
24418 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24419
24420         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24421         methods with large stack frames under Win32.
24422
24423 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24424
24425         * Makefile.am: Distribute regression tests.
24426
24427         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24428         at the end instead of inserting each variable into the sorted list.
24429
24430         * linear-scan.c (mono_varlist_sort): New helper function.
24431         
24432 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24433
24434         * mini.c: ensure arguments and locals are within bounds.
24435
24436 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24437
24438         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24439         related fixes.
24440
24441 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24442
24443         * mini.c (mono_cprop_copy_values): Fix crash.
24444
24445         * aot.c: Set verbosity back to 0.
24446         
24447 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24448
24449         * regalloc.c: complete memory leak fix by Laurent Morichetti
24450         (l_m@pacbell.net).
24451
24452 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24453
24454         * driver.c (main_thread_handler): Revert the previous patch.
24455
24456         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24457         under valgrind.
24458
24459         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24460         memory from the memory pool.
24461
24462         * driver.c (main_thread_handler): Turn on all optimizations when
24463         --aot is used.
24464
24465         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24466         an array for better performance.
24467
24468         * regalloc.c (mono_regstate_assign): Fix memory leak.
24469
24470         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24471         serialize the debug info.
24472
24473         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24474         debug info from the serialized representation.
24475
24476         * aot.c: Save debug info into the generated file and load it when 
24477         loading a method.
24478
24479         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24480
24481 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24482
24483         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24484         More FP-related fixes.
24485
24486 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24487
24488         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24489         and register allocation buglet. Hello world now runs.
24490
24491 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24492
24493         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24494         * tramp-ppc.c: fixed class init trampoline.
24495         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24496
24497 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24498
24499         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24500         mini.c: more ppc changes/fixes.
24501
24502 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24503
24504         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24505         Also optimize the case when the arguments are the same in the caller 
24506         and in the callee.
24507
24508         * iltests.il: Add tests for tail calls with valuetype arguments.
24509
24510 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24511
24512         * mini-ppc.c: fixes for struct return type.
24513
24514 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24515
24516         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24517         mono_spillvar_offset() to arch-specific code.
24518
24519 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24520
24521         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24522
24523 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24524
24525         * exceptions-x86.c: Fix stack space leaks.
24526         
24527         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24528         registers from the lmf if the method has save_lmf set.
24529
24530 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24531
24532         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24533         of icall wrappers into InvokeInDomain, since these are now per-domain.
24534
24535 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24536
24537         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24538         make some opcode emulation and intrinsic ops enabled/disabled 
24539         according to the architecture. More fixes.
24540
24541 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24542
24543         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24544
24545 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24546
24547         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24548         arch-specific handling for 'this' and struct return type to
24549         arch-specific code.
24550
24551 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24552
24553         * aot.c: prevent divide by zero error when reporting (it happened with
24554         Accessibility.dll).
24555
24556 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24557
24558         * mini.h (inst_switch): Remove unused macro.
24559
24560 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24561
24562         * aot.c:
24563         (load_aot_module): free 'info->methods' and 'info' properly. No more
24564         "free(): invalid pointer blah" messages when you have an old aot
24565         compiled assembly.
24566
24567 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24568
24569         * jit-icalls.c, mini.c: Added support for context static fields.
24570
24571 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24572
24573         * mini.c (mono_method_blittable): Methods which set LastError are not 
24574         blittable either. Fixes #51108.
24575         
24576 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24577
24578         * mini.c: flush icache.
24579         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24580
24581 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24582
24583         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24584
24585 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24586
24587         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24588         safe on IA32.
24589
24590         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24591         vararg calls.
24592
24593         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24594
24595 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24596
24597         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24598         instruction when the result is discarded.
24599
24600         * iltests.il (test_0_div_regalloc): New regression test.
24601
24602         * arrays.cs: Fix compilation error.
24603
24604 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24605
24606         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24607         float rules to inssel-x86.brg: sane architectures with FP registers
24608         don't need to implement these rules.
24609
24610 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24611
24612         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24613
24614 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24615
24616         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24617         implementation of 32 bit systems.
24618
24619 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24620
24621         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24622         (Jeroen Zwartepoorte).
24623
24624 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24625
24626         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24627         the caller and the callee matches.
24628         
24629         * mini.c (mono_method_to_ir): Add comment.
24630
24631         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24632         signbit is missing on some platforms.
24633
24634 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24635
24636         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24637
24638         * mini.c (setup_jit_tls_data): Call the new function.
24639         
24640         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24641
24642         * mini-x86.c: Add experimental support for fast access to the lmf
24643         structure under NPTL/Linux 2.6.x.
24644
24645 2003-11-06  Martin Baulig  <martin@ximian.com>
24646
24647         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24648         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24649         the debugger.
24650
24651 2003-11-02  Martin Baulig  <martin@ximian.com>
24652
24653         * mini.c (inflate_generic_field): New static method.
24654         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24655         generic instance and the field is declared in a generic type, call
24656         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24657
24658 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24659
24660         * mini.h mini.c (mono_method_same_domain): New function to return
24661         whenever the caller and the callee are in the same domain.
24662
24663         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24664
24665 2003-10-30  Martin Baulig  <martin@ximian.com>
24666
24667         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24668         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24669         method parameters.
24670         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24671         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24672
24673 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24674
24675         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24676         propagation.
24677
24678         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24679         object here, so it is in the correct appdomain etc.
24680
24681 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24682
24683         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24684         already done.
24685         (mono_method_to_ir): Avoid freeing the type created returned from
24686         mono_type_create_from_typespec, since it is put into an internal cache
24687         by the function. Fixes pointer.exe.
24688
24689         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24690         trampolines for icalls and pinvokes as well. Fixes #33569.
24691
24692 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24693
24694         * mini.c: Update after appdomain changes.
24695
24696         * mini.c (mono_jit_compile_method_inner): Allways compile native
24697         method wrappers in the root domain, since there can only be one
24698         instance of them, whose address is stored in method->info.
24699
24700 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24701
24702         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24703         environment variable. Instead detect automatically whenever running
24704         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24705         valgrind.h.
24706
24707 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24708
24709         * trace.c, trace.h: New files that implement the new trace option
24710         parsing. 
24711
24712         * driver.c: Document new --trace options.
24713
24714         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24715         mini-x86.c: Apply:
24716
24717         -       if (mono_jit_trace_calls)
24718         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24719
24720         * mini.h: prototypes.
24721         
24722 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24723
24724         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24725
24726         * mini.c inssel.brg: Implement typedefbyref opcodes.
24727
24728         * mini.c (mono_jit_compile_method): Remove unused local variable.
24729
24730         * mini.c (mono_jit_compile_method_inner): Ditto.
24731         
24732 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24733
24734         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24735         
24736         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24737
24738 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24739
24740         * mini.c (mono_no_aot): Remove unused global variable.
24741
24742         * mini.c: Thread safety fixes.
24743
24744 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24745
24746         * mini.c (mono_create_class_init_trampoline): Add a lock around
24747         class_init_hash_addr.
24748
24749         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24750         #30073.
24751
24752         * mini.c: Decompose the NEWARR instruction before decomposing its
24753         arguments. Fixes #30073.
24754
24755 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24756
24757         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24758         convention.
24759
24760 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24761
24762         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24763
24764         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24765
24766         * driver.c: Add support for compiling icall wrappers to --compile.
24767
24768 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24769
24770         * inssel.brg: The empty value in class->interface_offsets is -1, not
24771         0. Fixes #49287.
24772
24773 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24774
24775         * objects.cs: New test for 'is' operator on an array of interfaces.
24776
24777 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24778
24779         * tramp-ppc.c: update trampoline code to support jumps
24780         and class initialization.
24781
24782 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24783
24784         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24785
24786         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24787
24788         * inssel.brg (OP_UNBOX): Remove unused rule.
24789
24790         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24791         region instead of one for each method. Fixes #47813.
24792
24793 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24794
24795         * exceptions.cs (test_0_nested_finally): New regression test for
24796         nested exception handlers.
24797
24798         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24799
24800         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24801
24802         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24803         inlining.
24804
24805         * mini.c (mono_method_check_inlining): Make the inlining limit 
24806         configurable by an environment variable.
24807         
24808         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24809
24810         * mini.h: Bump AOT file version.
24811
24812         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24813         token, store the image along with the token, since the token might not 
24814         refer to the same image as the method containing the relocation, 
24815         because of inlining.
24816
24817 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24818
24819         * mini.c (mono_precompile_assemblies): New function to compile
24820         all methods in all loaded assemblies.
24821
24822         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24823
24824         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24825         iassign and fassign to int*, since they can contain large negative
24826         values if the register is spilled. Also added some comments. Fixes
24827         #45817.
24828
24829         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24830         under Win32. Fixes #42964.
24831
24832 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24833
24834         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24835
24836         * aot.c: Added support for AOT compiling methods which contain calls
24837         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24838         handled.
24839         
24840         * driver.c (compile_all_methods): Run the compilation in a thread
24841         managed by mono. Fixes #44023.
24842
24843         * mini.c (mono_codegen): Print full method name in verbose output.
24844
24845         * mini-x86.c (mono_arch_patch_code): Fix warning.
24846         
24847         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24848         jumps, since the method we are jumping to might be domain-specific.
24849
24850         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24851
24852 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24853
24854         * inssel.brg: string chars are unsigned.
24855
24856 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24857
24858         * TODO: New todo item.
24859
24860         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24861         which calls mono_runtime_class_init and patches the call site to
24862         avoid further calls.
24863         (mono_arch_create_class_init_trampoline): New arch specific function 
24864         to create a class init trampoline.
24865         (create_trampoline_code): Generalized so it can create
24866         class init trampolines as well.
24867
24868         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24869         (mono_create_class_init_trampoline): New function to create and cache
24870         class init trampolines.
24871         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24872         vtable given the address of a class init trampoline. Used by the
24873         patching process.
24874         (mono_codegen): Generate a call to a trampoline instead of
24875         mono_runtime_class_init in LDSFLD[A].
24876         (mono_codegen): Add relocations for the new trampoline.
24877         
24878         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24879         MONO_PATCH_INFO_CLASS_INIT.
24880
24881         * mini.h: Bump AOT version number.
24882
24883         * aot.c: Create a copy of the loaded code instead of using the original
24884         so methods which call each other will be close in memory, improving
24885         cache behaviour.
24886         
24887         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24888         patch since it breaks the regression tests.
24889         
24890         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24891         for the register saving instruction sequence since the 
24892         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24893
24894 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24895
24896         * TODO: Fix todo item && remove another.
24897
24898 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24899
24900         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24901         previous checkin.
24902
24903         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24904         function of the module.
24905
24906         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24907         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24908         --no-aot command line option.
24909
24910 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24911
24912         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24913         by Bernie Solomon (bernard@ugsolutions.com).
24914
24915         * inssel.brg: Refactor the interface offset table related code into
24916         its separate functions and add support for the AOT case.
24917
24918 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24919
24920         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24921         
24922         * aot.c: Added mono_aot_verbose variable and made all debugging
24923         output depend on the value of this variable.
24924
24925         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24926         method_label and info_label.
24927
24928         * mini.h mini-x86.c aot.c: Added a new relocation type 
24929         MONO_PATCH_INFO_IID for klass->interface_id.
24930
24931         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24932         the MonoJitInfo structure.
24933
24934         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24935         a non-root appdomain in shared mode.
24936
24937 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24938
24939         * aot.c: make aot loader less verbose. Remove free of unused variable.
24940
24941 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24942
24943         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24944
24945         * .cvsignore: Added *.dll.
24946
24947         * mini.c (mono_print_tree_nl): New function callable while debugging.
24948
24949         * mini.c (mono_print_code): Export this.
24950
24951         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24952         patched code.
24953
24954 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24955
24956         * mini.h (MonoCompile): Added 'jit_info' field.
24957
24958         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24959         the cfg structure, since it is needed by the AOT compiler.
24960
24961         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24962
24963         * aot.c: A major rewrite. Changes include:
24964         - save exception tables for methods which have them.
24965         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24966         to g_module_symbol.
24967         - reworked the file format so it is now much smaller and needs
24968         fewer relocation entries.
24969         
24970 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24971
24972         * aot.c (load_aot_module): Fix build bustage on platforms without
24973         Boehm GC.
24974
24975 2003-09-04  Martin Baulig  <martin@ximian.com>
24976
24977         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24978
24979 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24980
24981         * TODO: Some new optimization ideas.
24982
24983         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24984
24985         * aot.c: Save the optimization flags used to compile the code into
24986         the AOT module.
24987
24988         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24989         support emitting domain specific code.
24990         
24991         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24992         no longer domain neutral. It can be made domain neutral by compiling 
24993         with --optimize=shared.
24994
24995         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24996         between appdomains.
24997
24998         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24999         loading of AOT code.
25000
25001         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25002         
25003         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25004         if there is no domain neutrality information.
25005
25006 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25007
25008         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25009         format version into the generated library.
25010
25011         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25012         callee method into the caller since one of them could be shared.
25013
25014         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25015         system exceptions from AOT code now works.
25016
25017         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25018         method if it is domain neutral and the callee is not.
25019
25020         * graph.c (cfg_emit_one_loop_level): Fix warning.
25021
25022 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25023
25024         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25025         last checkin.
25026
25027 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25028
25029         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25030         is needed  by code which is executed before mono_runtime_init ().
25031         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25032         
25033         * mini.c (mono_thread_abort): Fix warning.
25034         (mono_jit_compile_method): Call static constructor in the AOT case too.
25035
25036         * aot.c (mono_compile_assembly): Fix warning.
25037
25038 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25039
25040         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25041
25042 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25043
25044         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25045
25046         * cpu-pentium.md: Fix the length of call opcodes so they include the
25047         ESP restoring instruction. Fixes #47968.
25048
25049 2003-08-28  Martin Baulig  <martin@ximian.com>
25050
25051         * mini-x86.c (mono_arch_call_opcode): Added support for
25052         MONO_TYPE_GENERICINST.
25053
25054         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25055
25056 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25057
25058         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25059         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25060
25061         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25062         metadata_section.
25063
25064 2003-08-26  Martin Baulig  <martin@ximian.com>
25065
25066         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25067         when reporting an error, set this to the actual error location.
25068         (mono_method_to_ir): Report the correct error location if
25069         get_basic_blocks() returned an error.
25070
25071 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25072
25073         * mini.c (mono_type_blittable): OBJECT is not blittable.
25074         (mono_method_blittable): Methods which have marshalling descriptors
25075         are not blittable either. Fixes #47842.
25076
25077 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25078
25079         * driver.c mini.c: Use an environment variable instead of a global 
25080         variable. Also fix the build.
25081
25082         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25083         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25084         reporting this. 
25085
25086         * driver.c mini.c: Added --with-valgrind option to turn off some
25087         code which prevents mono from running under valgrind.
25088
25089         * mini.c (mono_emit_call_args): Fixed warning.
25090
25091         * mini.c (mono_emulate_opcode): Fixed warning.
25092
25093 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25094
25095         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25096         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25097         regalloc.c, regalloc.h: specify available registers in arch-specific
25098         code and support floats in the regallocator (patch by Laurent Morichetti 
25099         <l_m@pacbell.net>)
25100
25101 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25102
25103         * mini.c: mono_thread_current() can be called only after
25104         mono_runtime_init(): rearrange code to not call it early on.
25105
25106 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25107
25108         * mini.c: allocate jump tables in the code mempools.
25109
25110 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25111
25112         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25113         freed.
25114
25115 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25116
25117         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25118         12 to 16.  This fixes bug #47453.
25119
25120
25121 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25122
25123         * mini-ppc.c: fixed indexed load and unsigned compares.
25124
25125 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25126
25127         * mini.c: reenabled installation of handler for
25128           thread abort signal.
25129
25130 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25131
25132         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25133         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25134         until it's fixed and actually useful.
25135
25136 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25137
25138         * inssel-long32.brg: couple more opcodes implemented.
25139
25140 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25141         
25142         * mini-sparc.c: Even more opcodes implemeted.
25143
25144 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25145
25146         * mini-sparc.c: More opcodes implemented.
25147
25148 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25149
25150         * mini-sparc.c: More opcodes implemented.
25151
25152 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25153
25154         * inssel-sparc.brg: Add some needed rules.  Direct
25155         copy from PPC.
25156         * Makefile.am: Use inssel-sparc.brg
25157         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25158         an assert happy for now.
25159
25160 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25161
25162         * mini-sparc.c: Fixed compile errors.
25163         * exceptions-sparc.c: Same.  We now produce a mono binary 
25164         on sparc-linux.  Yea.
25165
25166 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25167
25168         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25169         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25170         They compile, but do not work.
25171
25172 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25173
25174         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25175         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25176         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25177         (ct@gentoo.org).
25178
25179 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25180
25181         * mini.c: more opcodes implemented and better support for generics.
25182
25183 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25184
25185         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25186         * mini.c, mini.h: first cut at generics support: some new instructions 
25187         added and changed the behaviour of some of the existing ones.
25188
25189 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25190
25191         * mini.c: Removed definition of metadata_shared mutex here.
25192
25193 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25194
25195         * mini-x86.c: make vararg calls work for instance methods.
25196
25197 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25198
25199         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25200         returns the arguments in a separte list, now.
25201
25202 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25203
25204         * aot.c, mini.c: updates for array type representation changes.
25205
25206 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25207
25208         * mini.c: register function to perform jit shutdown.
25209
25210 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25211
25212         * mini.c: use a faster allocator if possible.
25213
25214 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25215
25216         * aot.c: some cleanups and portability changes.
25217
25218 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25219
25220         * mini.c: use faster allocation for CEE_BOX if possible.
25221
25222 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25223
25224         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25225         Moved inlined mempcy code to its own function so that is can be
25226         reused. Added an inline memset function as well (optimized initobj).
25227         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25228
25229 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25230
25231         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25232
25233 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25234
25235         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25236         arch code can setup the cpu for CLR execution, if needed.
25237         We use it on x86 to set the precision of FP operations.
25238
25239 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25240
25241         * mini.c: disable some optimizations if we can guess they'll cost too
25242         much for a given method.
25243
25244 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25245
25246         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25247         
25248 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25249         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25250         info collection support.
25251
25252 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25253
25254         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25255         is now implemented in the profiling API. Get rid of a couple of
25256         unnecessary global variables.
25257
25258 2003-06-15  Nick Drochak <ndrochak@gol.com>
25259
25260         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25261         * cpu-g4.md: add op_bigmul and op_bigmul_un
25262         * cpu_pentium.md: add op_bigmul_un
25263         * inssel-long32.brg: add rule for unsigned bigmul
25264         * mini-ops.h: define OP_BIGMUL_UN
25265         * mini-x86.c: THE BUG: handle (un)signed properly
25266         * mini.c: choose unsigned opcode if needed.
25267         This set of patches fixes bug #44291
25268
25269 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25270
25271         * mini.c (optimize_branches): improved to handle all kinds of
25272         conditional branches.
25273
25274 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25275
25276         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25277         don't raise exceptions.
25278
25279 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25280
25281         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25282         to arch-specific files.
25283
25284 2003-06-09  Martin Baulig  <martin@ximian.com>
25285
25286         * Makefile.am (libs): Added $(LIBGC_LIBS).
25287
25288 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25289
25290         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25291         and OP_ATAN (fixes bug#44293).
25292
25293 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25294
25295         * Makefile.am, mini-x86.c: rename cpu description array to
25296         pentium_desc, since some compilers define the 'pentium' preprocessor
25297         symbol.
25298
25299 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25300
25301         * mini.c (mini_select_instructions): add explicit branch if the
25302         following block is not the false target of a conditional branch -
25303         we need this with any optimization that reorder or remove bblocks
25304
25305         * mini.c (optimize_branches): bug fixes
25306
25307 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25308
25309         * mini.c (mono_method_to_ir): inline static readonly fields
25310
25311         * ssa.c (fold_tree): start cfold support for long (very simple
25312         cases only)
25313
25314         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25315
25316 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25317
25318         * inssel.brg: fixed memcpy (bug #44219).
25319
25320 2003-06-05  Dick Porter  <dick@ximian.com>
25321
25322         * driver.c: Set the glib log levels to not abort if g_message
25323         recurses.
25324
25325         g_set_prgname() has to happen before mini_init() so that the
25326         process handle gets the info.
25327         
25328 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25329
25330         * driver.c: add intrins to the default optimizations to get wider
25331         exposure.
25332
25333 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25334
25335         * mini.h: some large basic blocks will overflow a 16-bit
25336         integers for symbolic registers.
25337
25338 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25339
25340         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25341         (mono_arch_output_basic_block): fix bug 43499 
25342
25343 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * mini.c: kill duplicated definition of mono_debug_format.
25346
25347 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25348
25349         * mini-x86.c, arrays.cs: fixed register allocation bug.
25350
25351 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25352
25353         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25354
25355         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25356
25357 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25358
25359         * mini.c:
25360         (print_method_from_ip): also print source location information if
25361         available.
25362
25363 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25364
25365         * mini.c (mono_find_block_region): bug fix in region code
25366         (mini_method_compile): enable removing unreachable code again, but
25367         only in methods without exception clauses.
25368
25369 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25370
25371         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25372         Implemented arglist opcode and handling of TypedReference type.
25373         Fixed x86 call convention when a structure is returned.
25374         Minimal support for calling static vararg methods.
25375
25376 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25377
25378         * mini.c (mini_method_compile):  always remove unreachable code,
25379         because the code in them may be inconsistent  (access to dead
25380         variables for example).
25381
25382 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25383
25384         * driver.c, debug-mini.c: warning fixes.
25385
25386 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25387
25388         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25389
25390 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25391
25392         * mini.c: thread-static fields are registered in mono_class_vtable(),
25393         so ensure the function is called before checking for them.
25394
25395 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25396
25397         * mini.c (optimize_branches): fix for bug 43586
25398
25399         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25400         overflow (fixes Bug #43639)
25401
25402 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25403
25404         * mini.c, objects.cs: allow the use of stobj for primitive types.
25405
25406 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25407
25408         * mini.c: be less strict about argument checking until we support
25409         running the verifier.
25410
25411 2003-05-27  Nick Drochak <ndrochak@gol.com>
25412
25413         * basic-long.cs: tests for (ulong)int * (ulong)int also
25414         * mini.c: use the same trick for (ulong)int * (ulong)int
25415
25416 2003-05-27  Nick Drochak <ndrochak@gol.com>
25417
25418         * basic-long.cs: add regression test for (long)int * (long)int
25419         * cpu-pentium.md: add op_bigmul specification
25420         * inssel-long32.brg: add OP_BIGMUL rule
25421         * mini-ops.h: add OP_BIGMUL
25422         * mini-x86.c: register allocator: handle case where src1 needs to be
25423         in EAX.
25424         * mini.c: substitute special BIGMUL opcode in the tree for 
25425         (long)int * (long)int
25426
25427 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25428
25429         * jit-icalls.c: call the type ctor on field access if needed.
25430
25431 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25432
25433         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25434         to a method (including results of ldelema, bug#43207).
25435
25436 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25437
25438         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25439         colors to show exception handler blocks.
25440
25441         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25442         (fix for pinvoke7.cs).
25443
25444 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25445
25446         * mini.h, mini.c: ensure correct initialization order for types that
25447         require it. Prepare for lazy compilation of jit icall wrappers.
25448         Provide a name for opcode emulation to reduce unneeded mallocing.
25449
25450 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25451
25452         * mini-x86.c: better register restoring code and profiling
25453         support for tail calls.
25454
25455 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25456
25457         * mini.h, driver.c: prepare for leaf methods optimization.
25458
25459 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25460
25461         * mini.c: get targets of branches before converting a method.
25462
25463 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25464
25465         * mini.c (optimize_branches): added some experimental code (disbaled) 
25466
25467 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25468
25469         * mini.c (optimize_branches): fix branch to branch optimization 
25470
25471         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25472
25473         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25474
25475         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25476
25477         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25478         if needed.
25479
25480 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25481
25482         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25483         enable use of interface variables again.
25484
25485         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25486         I1 to registers because there is no simply way to sign extend 8bit
25487         quantities in caller saved registers on x86.
25488
25489         * inssel-float.brg: set costs of some rules to 2 so
25490         that monobure always select the arch. specific ones if supplied,
25491         regardless of the order we pass the files to monoburg.
25492
25493 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25494
25495         * mini.c, mini-x86.c: since the magic trampoline for jumps
25496         can't patch the code directly, we do it as soon as the
25497         method gets compiled.
25498
25499 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25500
25501         * mini-x86.c, mini.h: introduce a new patching method
25502         to support CEE_JMP and tail calls.
25503         * mini.c: obey tail.call. Don't precompile methods target
25504         of CEE_JMP.
25505         * tramp-x86.c: new trampoline code to handle methods
25506         reached through a jump.
25507
25508 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25509
25510         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25511         bit values to registers
25512
25513 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25514
25515         * mini.c (mono_compile_get_interface_var): share interface
25516         variables if possible.
25517
25518 2003-05-16  Martin Baulig  <martin@ximian.com>
25519
25520         * debug-mini.c (mono_init_debugger): New function to initialize
25521         the debugger.  This is not in the debugger since it needs to
25522         access some of mini's internals.
25523
25524 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25525
25526         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25527
25528 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25529
25530         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25531         for value type handling.
25532
25533 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25534
25535         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25536         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25537
25538 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25539
25540         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25541           the constructor through a proxy.
25542
25543 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25544
25545         * jit-icalls.c, inssel.brg: fixes to array element address
25546         calculations.
25547
25548 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25549
25550         * mini-x86.c (is_regsize_var): allocate pointer to registers
25551
25552 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25553
25554         * driver.c: fixed typo, added intrins to the set of optimizations
25555         tested with regressions.
25556
25557 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25558
25559         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25560         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25561         test case.
25562
25563 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25564
25565         * inssel.brg: remove some common pop instructions without side effects
25566
25567 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25568
25569         * inssel-x86.brg: fixed thinko in int to double conversions.
25570
25571 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25572
25573         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25574
25575 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25576
25577         * inssel-long32.brg: two more missing instructions.
25578
25579 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25580
25581         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25582         if not already set.
25583
25584 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25585
25586         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25587         correctly.
25588
25589         * basic-float.cs: Added tests for negative zero.
25590
25591 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25592
25593         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25594         a couple of missing operations for long casts, with test cases.
25595
25596 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25597
25598         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25599
25600 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25601
25602         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25603         code size estimation.
25604
25605 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25606
25607         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25608         abstract methods (fix bug 42542)
25609
25610         * aot.c: add ability to handle array types
25611         
25612 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25613
25614         * mini.c: Call the _specific versions of the object allocation
25615         functions if possible.
25616
25617 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25618
25619         * driver.c: call setlocale ().
25620
25621 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25622
25623         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25624         windows build.
25625
25626 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25627
25628         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25629
25630         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25631         wrappers (fix bug 42122)
25632
25633 2003-05-04  Martin Baulig  <martin@ximian.com>
25634
25635         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25636
25637         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25638         s/mini_set_defaults/mono_set_defaults/g.
25639
25640 2003-05-04  Martin Baulig  <martin@ximian.com>
25641
25642         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25643
25644 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25645
25646         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25647         (reported by Don Roberts).
25648
25649 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25650
25651         * mini.c: temporarily work around two bugs for this release.
25652
25653 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25654
25655         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25656         that contains -export-dynamic and it makes using the ld script
25657         useless.
25658         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25659
25660 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25661
25662         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25663         specific cpu.
25664
25665 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25666
25667         * mini.c: make sure leave calls all the needed finally blocks,
25668         even when the target jumps out of multiple exception clauses.
25669
25670 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25671
25672         * ldscript, Makefile.am: add linker script to reduce the number of
25673         exported symbols (should also fix the issues with libwine defining
25674         some of the same symbols in io-layer).
25675
25676 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25677
25678         * driver.c (mini_main): Avoid assertion when no file name is given on 
25679         the command line.
25680
25681 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25682
25683         * driver.c: added --version/-V command line option.
25684         Added the inline optimization in the regression tests.
25685
25686 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25687
25688         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25689         to the type in the method signature (fixes bug#42134).
25690
25691 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25692
25693         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25694
25695 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25696
25697         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25698
25699 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25700
25701         * driver.c: fixed bug #42100.
25702
25703 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25704
25705         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25706
25707 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25708
25709         * mini.c: moved most of the code required to do inlining to its own
25710         function so it can be reused. Inline also ctors if appropriate.
25711
25712 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25713
25714         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25715         the runtime can call mono API functions.
25716
25717 2003-04-27  Martin Baulig  <martin@ximian.com>
25718
25719         * debug-mini.c (mono_debug_init_method): Added
25720         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25721         send a notification to the debugger.
25722
25723         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25724         running in the Mono Debugger, just pass the breakpoint number to
25725         mono_debug_init_method().
25726
25727         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25728
25729 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25730
25731         * mini.c: allow some more unsafe compares.
25732
25733 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25734
25735         * mini-x86.c, Makefile.am: make distcheck works (partially from
25736         a patch by Richard Lee <r.h.lee@attbi.com>).
25737         * regset.c, regset.h: removed, they are unused.
25738
25739 2003-04-25  Dick Porter  <dick@ximian.com>
25740
25741         * driver.c: Usage reports the name as 'mono' not 'mini'
25742         * exceptions-x86.c: Build and run on freebsd
25743
25744 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25745
25746         * Makefile.am: install the program with the 'mono' name and
25747         the library as libmono instead of mini and libmini.
25748
25749 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25750
25751         * driver.c: provide the APIs for the embedding interface of the old jit.
25752
25753 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25754
25755         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25756
25757 2003-04-23  Martin Baulig  <martin@ximian.com>
25758
25759         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25760
25761         * driver.c: Added `--debug' command line argument to enable
25762         debugging support.
25763
25764 2003-04-23  Martin Baulig  <martin@ximian.com>
25765
25766         * debug.[ch]: Removed.  The code is now in
25767         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25768
25769         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25770         last six months.
25771
25772 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25773
25774         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25775
25776 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25777
25778         * mini.c:
25779         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25780         mono_domain_finalize.
25781         (mini_method_compile): use mono_method_profile* if the the option is
25782         enabled.
25783
25784 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25785
25786         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25787         methods with their wrapper.
25788
25789         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25790         methods with their wrapper.
25791
25792         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25793         their wrapper.
25794
25795         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25796         wrapper.
25797
25798         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25799         methods.
25800
25801 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25802
25803         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25804
25805 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25806
25807         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25808         of the mempool. This is slightly faster and uses less memory
25809
25810 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25811
25812         * mini.c: avoid O(n) allocation for variables.
25813
25814 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25815
25816         * mini.c: handle items on the stack after inlining methods.
25817
25818 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25819
25820         * mini.c: make the method->opcode optimization dependent
25821         on MONO_OPT_INSTRINS and do it lazily.
25822
25823 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25824
25825         * driver.c: print overall results at the end of regression run.
25826
25827 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25828
25829         * inssel.brg: don't overwrite symbolic registers.
25830
25831 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25832
25833         * inssel-x86.brg: fix conversion from long to float.
25834
25835 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25836
25837         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25838
25839 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25840
25841         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25842
25843         * driver.c: Added --print-vtable option as in the old JIT.
25844
25845 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25846
25847         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25848
25849 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25850
25851         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25852
25853 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25854
25855         * mini.c regalloc.c regalloc.h: Fix memory leak.
25856
25857 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25858
25859         * aot.c (mono_aot_get_method): register all used strings
25860
25861 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25862
25863         * mini.c: always intern strings references with ldstr at compile time.
25864
25865 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25866
25867         * Makefile.am: add BUILT_SOURCES.
25868
25869 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25870
25871         * driver.c: give a better error message when the assembly to execute
25872         doesn't have an entry point.
25873
25874 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25875
25876         * Makefile.am: added hack for automake
25877
25878         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25879         correct sematics.
25880
25881         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25882
25883 22003-04-07  Martin Baulig  <martin@ximian.com>
25884
25885         * Makefile.am: Added Makefile.am.
25886
25887         * debugger-main.c: Removed, this is now in the debugger where it
25888         belongs.
25889
25890         * mini.pc.in: Call this package `mini' for the moment.
25891
25892
25893
25894
25895
25896
25897
25898
25899
25900
25901
25902
25903
25904
25905