2010-07-09 Miguel de Icaza <miguel@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-09  Miguel de Icaza  <miguel@novell.com>
2
3         * driver.c (mini_usage): Change the name of the --sgen flag to be
4         --gc=sgen and also support --gc=boehm.   These flags can also be
5         set on MONO_ENV_OPTIONS to propagate this to children processes. 
6
7         * main.c: Remove the MONO_VM_OPTIONS environment variable that
8         only supported "sgen" and "llvm" config options and instead parse
9         the MONO_ENV_OPTIONS as options that are parsed by the command
10         line parser.   Any command line option that Mono supports can be
11         passed in this environment variable.
12
13 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
14
15         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
16         LLVM.
17
18         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
19         it can now eliminate more than just bounds checks.
20
21         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
22         an extra 'fault' argument.
23
24         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
25         later.
26
27         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
28         decomposition.
29
30         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
31         no longer generated when LLVM is used.
32
33         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
34
35 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
36
37         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
38
39 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
40
41         * driver.c: Moonlight: Force line buffering for stdout.
42
43 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
44
45         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
46         are only callable using invoke.
47
48 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini-llvm.c (process_bb): Use emit_load () in one more place.
51
52         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
53         MONO_LLVM=xxx is actually usable.
54
55         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
56         since LLVM might be able to hoist them out of loops.
57         (emit_store): Ditto.
58
59 2010-07-08  Neale Ferguson <neale@sinenomine.net>
60
61         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
62         in typeload-unaligned test.
63
64 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
65
66         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
67
68         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
69         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
70         generic trampolines+rgctx fetch trampolines.
71
72 2010-07-08  Geoff Norton  <gnorton@novell.com>
73
74         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
75
76 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
77
78         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
79
80         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
81         is not defined in the LLVM case to keep the imt arg alive.
82
83 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
84
85         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
86         functions, now its 'llvm_<FOO>_trampoline'.
87
88         * method-to-ir.c (emit_imt_argument): Fix llvm support.
89
90         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
91         cannot be passed in the same call.
92
93         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
94         register to be the same as the RGCTX register, the two can't be used together on
95         the same call.
96
97 2010-07-05  Miguel de Icaza  <miguel@novell.com>
98
99         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
100         that allows the user to force the VM to use llvm or sgen.
101
102 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
103
104         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
105         before processing the exception on PPC too.
106
107         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
108
109         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
110         'this' is always passed as the first argument, before the vtype ret arg. This
111         simplifies get_this_arg_reg () and LLVM integration.
112
113 2010-07-05  Martin Baulig  <martin@ximian.com>
114
115         * exceptions-x86.c (mono_arch_handle_exception): Port this to
116         Windows; apply my patch from r159782 in the mono-2-6 branch.
117
118 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
119
120         * Makefile.am: Don't build the debug assembler files if we're building without
121         debugger support.
122
123 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
124
125         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
126
127 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
128
129         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
130         length.
131
132         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
133         regs [ARMREG_FP] instead.
134
135         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
136
137         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
138         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
139
140         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
141
142         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
143
144         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
145
146         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
147         without IMT_REG defined (ARM).
148
149         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
150         the trampolines.
151
152 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
153
154         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
155
156 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
157
158         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
159         definitions to match their declarations and vice-versa.
160
161 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
162
163         * Makefile.am (common_sources): Add mini-llvm.h.
164
165         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
166
167 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
168
169         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
170         compiling.
171
172 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
173
174         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
175         implemt the option of loading the llvm backend from a module so
176         that we can have a single binary and the bloat from llvm is
177         only experienced when it is actually loaded.
178
179 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
180
181         * mini-llvm.c: remove direct access to mono_defaults.
182
183 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
184
185         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
186         a no-op.
187
188         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
189
190         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
191         is now mono_arch_nullify_class_init_trampoline ().
192         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
193         opcodes, they are no longer needed.
194
195         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
196         now mono_arch_nullify_class_init_trampoline ().
197         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
198         opcodes, they are no longer needed.
199
200         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
201         vtable on platforms which support it.
202
203         * driver.c: Print the full LLVM version we are compiled against in --version.
204
205         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
206         a bit better. Decode nesting information to fix eh support for llvm+aot.
207
208         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
209         methods.
210
211         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
212
213         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
214         is always passed as the first argument, before the vtype ret arg. This simplifies
215         get_this_arg_reg () and LLVM integration.
216
217 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
218
219         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
220         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
221         most of the vcall specific code to mono_vcall_trampoline () from
222         common_call_trampoline ().
223
224 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
225
226         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
227         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
228         if the callsite is patched.
229
230         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
231         the llvm branch.
232
233         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
234         the trampoline in the xdebug info.
235
236         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
237         as well.
238
239 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
240
241         * mini-llvm.c: Fix a few problems exposed by make check.
242
243 2010-06-25  Mark Probst  <mark.probst@gmail.com>
244
245         * mini-trampolines.c (common_call_trampoline): An ugly hack to
246         work around a potentially very hard to fix problem with inflating
247         generic methods.
248
249 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
250
251         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
252         problem has been fixes.
253
254 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
255
256         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
257
258         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
259         It might be be better to define a MonoGCJitOptions structure later and have the
260         GC return that.
261
262         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
263
264         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
265
266         * debugger-agent.c (get_objref): Implement support for sgen.
267
268         * driver.c: Remove the unused gc_wrapper.h include.
269
270         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
271         implementation.
272
273 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
274
275         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
276
277         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
278         in MonoCompile.
279
280         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
281         instead.
282
283 2010-06-23  Miguel de Icaza  <miguel@novell.com>
284
285         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
286         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
287
288         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
289         it only for Boehm diagnostics.
290
291         * Makefile.am: Make the file a bit more consistent.
292
293         * debug-debugger.c: Wrap the entire file with an #ifdef
294         MONO_DEBUGGER_SUPPORTED to simplify the build.
295
296         * Makefile.am: Fix the opcodes build issue by including the
297         source, not by including the .lo file directly
298
299         Always bring the MDB sources into the build, to drop the
300         dependency on the AM_CONDITIONAL from configure.in as the hard
301         debugger supports Boehm, but not Sgen, this simplifies the build. 
302
303         * Renamed the *.s files into *.S
304
305 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
306
307         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
308         wb for now on 64bits systems while issues with valuetype returns
309         are not fixed.
310
311 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
312
313         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
314         passes by calling createStandardFunctionPasses ().
315
316 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
317
318         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
319
320 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
321
322         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
323         MONO_INST_FAULT.
324
325         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
326         allow better optimization if the OP_LDADDR which caused the flag to be set was
327         optimized away.
328
329         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
330
331         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
332         the type token.
333
334         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
335
336         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
337
338 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
339
340         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
341         to handle the code sequence generated for non-near calls. Fixes #616056.
342
343 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
344
345         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
346
347         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
348
349         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
350         nesting clause too.
351         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
352         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
353         trampoline which saves the context, so changes made to callee saved registers in
354         finally clauses are visible to a nesting catch clause.
355
356         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
357
358         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
359         in LLVM compiled code.
360         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
361         the finally handler has ran.
362
363         * mini.h (ResumeState): New structure containing information required to resume
364         exception handling after executing LLVM compiled finally clauses.
365
366         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
367         bit, by passing all the registers as one argument.
368
369 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
370
371         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
372         to avoid an assert.
373
374 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
375
376         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
377
378         * aot-compiler.c aot-runtime.c: Fix LLVM support.
379
380         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
381         pad, branch to a new bblock instead.
382
383         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
384         orig_method.
385
386         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
387
388         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
389
390 2010-06-17  Geoff Norton  <gnorton@novell.com>
391
392         * mini-arm.h:
393         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
394         can be used by sgen.
395
396 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
397
398         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
399
400         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
401         fails.
402
403         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
404         the ip done by throw_exception (), it is not needed for corlib exceptions.
405
406 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
407
408         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
409         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
410         of size > 5 words. This support fast barriers for value types up to
411         256/512 bytes which     beyond that the copying itself is the major issue.
412
413         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
414         for gsharing, so use it.
415
416         This eliminate all calls to mono_value_copy from managed code in
417         gmcs, fsharp and ipy.
418
419         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
420
421         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
422         performance kept
423
424         * mini.c (mini_init): Register new icall.
425
426 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
427
428         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
429         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
430
431 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
432
433         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
434         value types as the overhead is huge. Manually expand it up to 5 words to
435         avoid code bloat.
436
437         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
438         is an exception that performance is dominated by mono_value_copy.
439
440         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
441
442 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
443
444         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
445         trampolines on x86, since those have their own cconv.
446
447         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
448         exception trampolines.
449
450         * tramp-x86.c: Add xdebug info for a few trampolines.
451
452         * mini-llvm.c: Set the name of the arguments.
453
454         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
455         using a block address if using the LLVM mono branch.
456
457         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
458         trampolines.
459
460 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
461
462         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
463
464         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
465
466         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
467
468         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
469
470         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
471         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
472         to identify the vtable slot address plus the method which needs to be compiled.
473
474         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
475         using llvm.
476
477         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
478         'this' is always passed as the first argument, before the vtype ret arg. This
479         simplifies get_this_arg_reg () and LLVM integration.
480
481         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
482         the latest changes.
483
484         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
485         these trampolines.
486
487         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
488
489         * mini-llvm.c: Fix compilation with llvm 2.6.
490
491         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
492
493         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
494         defined.
495
496         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
497         is always passed as the first argument, before the vtype ret arg. This simplifies
498         get_this_arg_reg () and LLVM integration.
499
500 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
503
504         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
505         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
506         translate into much nicer code.
507
508 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
509
510         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
511         parameter index information. Use this to simplify a lot of code.
512
513         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
514
515 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
516
517         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
518         to fix infinite generic recursion. Fixes #612702.
519
520 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
521
522         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
523         imt trampoline per imt slot when using LLVM.
524
525 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
526
527         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
528
529 2010-06-09  Levi Bard  <levi@unity3d.com>
530
531         * debugger-agent.c: Clear unloaded types on appdomain unload.
532
533 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
534
535         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
536         Fixes #612206.
537
538         * exceptions.cs: Add a test.
539
540 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
541
542         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
543
544         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
545
546         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
547         so it doesn't have to do it.
548
549         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
550         process does not mix with ours.
551
552         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
553         ones.
554
555         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
556         loads/stores which can throw exceptions inside clauses.
557
558 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
559
560         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
561         one ENDFINALLY.
562
563         * mini.c (mini_init): Register mono_resume_unwind as an icall.
564
565 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
566
567         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
568
569         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
570         locals.
571
572 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
573
574         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
575         appdomain.
576
577 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
578
579         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
580         Use a separate generic class init trampoline for llvm, since it needs a different
581         signature.
582
583         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
584         includes the location of this/rgctx.
585
586         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
587         branch.
588
589 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
590
591         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
592
593         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
594         clause.
595
596 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
597
598         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
599         says so.
600
601         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
602
603         * aot-compiler.c (patch_to_string): New debugging helper function.
604
605 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
606
607         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
608         trampoline.
609
610         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
611
612         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
613
614         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
615
616         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
617         clauses.
618
619         * mini.c (create_jit_info): Print EH clause info for LLVM too.
620
621 2010-05-28  Mark Probst  <mark.probst@gmail.com>
622
623         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
624         cpobj with reference types.
625
626 2010-05-28  Mark Probst  <mark.probst@gmail.com>
627
628         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
629         write barrier for reference types.
630
631 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
632
633         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
634         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
635
636 2010-05-31  Martin Baulig  <martin@ximian.com>
637
638         Fix #608271.
639
640         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
641         clear_breakpoint() on all breakpoint events and remove them from the list.
642
643 2010-05-27  Martin Baulig  <martin@ximian.com>
644
645         Fix #605698.
646
647         * debugger-agent.c (method_commands, type_commands): Temporarily
648         set the appdomain while executing this method; do all metadata
649         calls in the debuggee's appdomain where user assemblies are loaded.
650
651 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
652
653         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
654
655 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
656
657         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
658
659 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
660
661         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
662         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
663         be referenced even after the header is freed.
664
665         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
666         section.
667
668 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
669
670 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
671
672         * genmdesc.c (main): Fixing the detection of the nacl switch.
673
674         Code is contributed under MIT/X11 license.
675
676 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
677
678         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
679
680         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
681
682         * mini.h (LLVM_CHECK_VERSION): New helper macro.
683
684 2010-05-25  Miguel de Icaza  <miguel@novell.com>
685
686         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
687         the Perl program
688
689         * genmdesc.c: Added support for nacl: key on the machine
690         description files to support the extra space required by Google
691         Native Client.
692
693 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
694
695         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
696
697 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
698
699         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
700         mono_runtime_class_init_full ().
701         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
702
703 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
704
705         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
706
707 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
708
709         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
710         two are not the same on ilp32.
711
712 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
713
714         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
715         added by mistake.
716
717         * mini-ppc.c: Fix the DISABLE_JIT build.
718
719 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
720
721         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
722         (make_writable): Remove this unused function.
723
724 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
725
726         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
727         structure. Make the labels to plt entries local symbols instead of assembler local
728         labels, since tha latter causes problems for the iphone linker.
729
730 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
731
732         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
733
734 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
735
736         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
737         (ppc_patch_full): Ditto.
738
739         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
740
741         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
742         if gshared is enabled, to avoid asserts in the trampoline code.
743
744         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
745         on ia64.
746
747 2010-05-15  Geoff Norton  <gnorton@novell.com>
748
749         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
750         xdebug mode.
751
752 2010-05-14  Geoff Norton  <gnorton@novell.com>
753
754         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
755         misaligned stack on darwin.
756
757 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
758
759         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
760         arm.
761
762 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
763
764         * xdebug.c: Fix ARM support.
765
766 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
767
768         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
769         and do most of the work on the normal stack.
770         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
771
772 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
773
774         * aot-compiler.c: Put non-code data into the .rodata section on linux.
775
776 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
777
778         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
779
780 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
781
782         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
783         and do most of the work on the normal stack.
784
785 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
786
787         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
788         and do most of the work on the normal stack even if sigaltstack is disabled.
789
790 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
791
792         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
793         UCONTEXT_REG_ constants are available on linux as well.
794         (mono_arch_monoctx_to_sigctx): Ditto.
795         (mono_arch_ip_from_context): Ditto.
796
797 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
798
799         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
800         other domains.
801
802 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
803
804         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
805         no longer needed.
806
807 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
808
809         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
810         if a breakpoint cannot be inserted.
811
812 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
813
814         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
815
816 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
817
818         * debugger-agent.c (frame_commands): Return an error instead of asserting if
819         no JIT info is found for the method.
820
821 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
822
823         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
824         in debug printf.
825
826 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
827
828         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
829         a list of arch specific trampolines.
830
831         * aot-compiler.c (emit_trampolines): Use it.
832
833 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
834
835         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
836         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
837         get rid of the _full from their name.
838
839 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
840
841         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
842         get_nullified_class_init_trampoline to remove some code duplication.
843
844 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
845
846         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
847         attach.
848
849 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
850
851         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
852
853         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
854
855         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
856         there is no need to jump through the first plt entry.
857
858         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
859
860         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
861         arch-specific function.
862         (mono_aot_get_plt_info_offset): Ditto.
863
864         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
865         mono_arch_init () to register jit icalls called from full-aot trampolines.
866         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
867         to mini-<ARCH>.c.
868
869         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
870         the specialized throw corlib exception trampoline, use a variant of the normal
871         trampoline along with a new C function which does the call to
872         mono_exception_from_token (), just like on x86.
873
874 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
875
876         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
877         Reorganize the full aot trampoline creation functions, instead of taking a bunch
878         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
879         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
880         creation functions on architectures which have the full-aot ones.
881
882 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
883
884         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
885
886 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
887
888         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
889         explicitly, this seems to be required by some gcc versions at -O2.
890
891         * mini-arm.c: Ditto.
892
893 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
894
895         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
896         has_target delegate invokes.
897
898 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
899
900         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
901         info fields.
902
903         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
904         add patches/unwind info arguments, move to mini.c.
905
906         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
907
908 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
909
910         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
911         command which returns full path names.
912
913 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
914
915         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
916         code_size output variable.
917
918         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
919         mono_get_lmf_addr.
920         
921 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
922
923         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
924         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
925         (mono_arch_cpu_enumerate_simd_versions): Ditto.
926
927 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
928
929         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
930         apple assembler.
931
932 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
933
934         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
935
936 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
937
938         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
939
940 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
941
942         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
943
944 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
945
946         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
947         line number support works with eglib.
948
949 2010-04-27  Miguel de Icaza  <miguel@novell.com>
950
951         * driver.c, mini.c: Since linking with LLVM makes the default Mono
952         dirty an extra 70kb pages on startup we are now going to choose a
953         different strategy: ship mono and mono-llvm binaries, with the
954         second being the one that links with LLVM and defaults to LLVM
955         being enabled.
956
957 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
958
959         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
960         Implement full-aot support on x86.
961
962         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
963         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
964         the first register returned by get_global_int_regs ().
965
966         * cpu-x86.md: Fix the length of insertx_u1_slow.
967
968         * iltests.il.in: Disable tail call tests when running with full-aot.
969
970 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
971
972         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
973
974 2010-04-24  Mark Probst  <mark.probst@gmail.com>
975
976         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
977         in the initializer, because it's non-constant.
978
979 2010-04-23  Miguel de Icaza  <miguel@novell.com>
980
981         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
982         of LLVM on by default.   Used for buildbots and other setups.
983
984 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
985
986         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
987
988 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
989
990         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
991         initonly static fields when using moving GC.
992
993         Contributed under MIT/X11 license.
994
995 2010-04-23  Geoff Norton  <gnorton@novell.com>
996
997         * mini-amd64.h: Darwin x86_64 support.
998
999 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1000
1001         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1002
1003 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1004
1005         * exceptions-arm.c: Add Android support for sigcontext structure.
1006
1007 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1008
1009         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1010         wrappers correctly now that their wrapper info is NULL.
1011
1012 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1013
1014         * mini.c (mono_jit_compile_method_inner): Avoid calling
1015         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1016
1017 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1018
1019         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1020         so the latter can be #ifndef DISABLE_JIT-ed.
1021
1022         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1023
1024 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1027
1028 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1029
1030         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1031         stack.
1032
1033 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1036         calling mono_class_num_methods (). Fixes #592244.
1037
1038 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1041
1042         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1043
1044 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1045
1046         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1047         version.
1048         * (handle_alloc): Ditto.
1049         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1050         change, its not needed anymore.
1051
1052 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1053
1054         * mini-posix.c (sigusr1_signal_handler): Fix build on
1055         non x86/amd64 systems.
1056
1057 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1058
1059         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1060         calls where the constrained class needs a context. Fixes #595863.
1061
1062         * iltests.il.in: Add a test.
1063
1064 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1067         2.6/SVN seems to have broken support for them.
1068
1069 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1070
1071         * mini-llvm.c: Fix support for LLVM 2.6.
1072
1073 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1076         MonoInternalThread belonging to the thread.
1077
1078 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1079
1080         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1081         unsafe optimization that will remove bound checks.
1082
1083 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1084
1085         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1086         CompareExchange not to be inlined for I8.
1087
1088         Contributed under MIT/X11 license.
1089
1090 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1091
1092         * array.cs: Add tests for cast between primitive array types.
1093
1094 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1095
1096         * Makefile.am: create a convenience library for moon to link with
1097
1098 2010-04-07 Paolo Molaro <lupus@ximian.com>
1099
1100         * method-to-ir.c: optimize array accesses from generic interfaces.
1101
1102 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1103
1104         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1105
1106 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1107
1108         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1109         of marshalbyref classes.
1110
1111         Fixes #515884.
1112
1113 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1114
1115         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1116         information.
1117
1118         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1119         information.
1120
1121         * mini.h: Increase AOT version.
1122
1123 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1124
1125         * mini-x86.h: Only enable soft debugger when using sigaction or on
1126         Windows. Fixes build on Haiku (lacks siginfo_t).
1127
1128         Code is contributed under MIT/X11 license.
1129
1130 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1131
1132         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1133         BeOS-style signal handlers.
1134
1135         Code is contributed under MIT/X11 license.
1136         
1137 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1140
1141 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1142
1143         * mini-exceptions.c: Fix win32 build.
1144
1145 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1146
1147         * mini.c, driver.c: Call mono_gc_base_init() before
1148         mono_debug_init().
1149
1150 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1151
1152         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1153         call_method]): Delegate the actual work in security-core-clr.c
1154         to ease code sharing.
1155
1156 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1157
1158         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1159         float conv.ovf.un opcodes are encountered, instead of asserting later.
1160         Fixes #566296.
1161
1162 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1165
1166         * iltests.il.in: Add a test.
1167
1168 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1169
1170         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1171         large. Fixes #567040.
1172
1173         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1174
1175 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1176
1177         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1178         #592711.
1179
1180 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1181
1182         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1183         mono_create_handler_block_trampoline with the proper #ifdef so that it
1184         compiles on amd64.
1185
1186 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1189         allows to select if it's new or old context that is passed to 
1190         the callback.
1191
1192         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1193         case when executing a guarded handler from the EH machinery.
1194
1195         * mini-exceptions.c (mono_install_handler_block_guard): New function
1196         responsible for checking for handler blocks, installing the guard and
1197         clearing abort state.
1198
1199         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1200         to check for handler blocks and skip interruption logic if one was found.
1201
1202         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1203         by the handler block guard trampoline. Resumes interruption by raising the
1204         pending ThreadAbortException.
1205
1206         * mini.c (create_jit_info): Calculate the end address of a finally block.
1207
1208         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1209         of a finally block to a specified address and return the old one.
1210
1211         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1212         trampoline patches the original return address and calls the trampoline function.
1213
1214 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1215
1216         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1217
1218         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1219         does the patching if the callee is in the same domain.
1220
1221         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1222         of mono_arch_patch_plt_entry ().
1223
1224 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * mini.c (create_jit_info): Fix try block hole length encoding.
1227
1228 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1229
1230         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1231         duplicate information and print offsets instead of absolute addresses.
1232
1233 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1234
1235         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1236         event is sent. Fixes #591733.
1237
1238 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1239
1240         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1241         OpenBSD.
1242
1243 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1246         thread_to_tls hash table.
1247
1248         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1249         section. Fixes #591000.
1250
1251 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1252
1253         * Makefile.am (version.h): Check for pure .git directory only,
1254         fixes SVN revision when using git without git-svn.
1255
1256         Contributed under MIT/X11 license.
1257
1258 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1259
1260         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1261
1262 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1263
1264         * basic-simd.cs: Test for vector x scalar binary operators.
1265
1266 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1267
1268         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1269         intrinsics with expanded scalar arguments.
1270
1271 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1272
1273         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1274         don't have an exception class, so don't decode it. This would crash
1275         with filter clauses.
1276
1277 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1278
1279         Make sure that trunk builds with DISABLE_JIT, an update to the
1280         PlayStation 3 port.
1281         
1282         * mini.c (mini_get_shared_method): this code seems to be necessary
1283         regardless of whether DISABLE_JIT has been defined.
1284
1285         (mono_jit_compile_method_inner): it seems that this method is
1286         required even in full AOT mode, so ifdef out only the pieces that
1287         try to genrate code (the body of code that applies patches to the
1288         code).  
1289
1290         (mini_method_compile): do not compile when using DISABLE_JIT.
1291
1292         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1293         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1294         compile when DISABLE_JIT is set.
1295
1296 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1297
1298         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1299         arch really supports it.
1300
1301 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1302
1303         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1304
1305 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1306
1307         * exceptions-s390x.c: Add support for
1308         mono_arch_get_throw_corlib_exception and fix throw by name.
1309
1310         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1311         logic (especially for varargs); Correct localloc sizing; Add
1312         mono_arch_get_this_arg_from_call and
1313         mono_arch_get_this_arg_from_call.
1314
1315         * mini-s390x.h: Add support for facility list extraction;
1316         Correct/update MONO_ARCH_xxx settings.
1317
1318         * mini-s390.c: Minor corrections to instruction output for
1319         varargs. No IMT implementation - I think it's time to deprecate
1320         s390 and just leave s390x.
1321
1322         * tramp-s390x.c: Correct creation of trampoline instruction
1323
1324
1325         * cpu-s390x.md: Update some instruction lengths
1326
1327 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1328
1329         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1330         can be hit with partial sharing.
1331
1332         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1333         in non-shared classes correctly.
1334         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1335         Turn on partial sharing.
1336
1337 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1338
1339         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1340         by mistake.
1341
1342 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1343
1344         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1345         mono_method_signature ().
1346
1347         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1348
1349         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1350         error checking, so later calls do not need error checking.
1351
1352 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1355
1356         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1357
1358 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1359
1360         * mini-exceptions.c (mono_handle_exception_internal): Don't
1361         check try_end for archs different than s390. 
1362
1363         * mini.c (create_jit_info): Don't crash if the finallt block is the
1364         last one.
1365
1366 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1367
1368         * driver.c (mono_main): Don't free global codeman under linux since
1369         glic now peeks at code on stack for more archs than just amd64.
1370
1371 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1372
1373         * mini.c, method-to-ir.c: changes to support compressed interface
1374         bitmaps.
1375
1376 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1377
1378         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1379         Use sigaction on OpenBSD too.
1380
1381 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1384
1385 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1386
1387         * debugger-agent.c: #include sys/select.h for fd_set.
1388
1389         Code is contributed under MIT/X11 license.
1390
1391 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1392
1393         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1394         (openbsd+amd64 ?).
1395
1396 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1399         some large methods with lots of exception handlers. Fixes #440924.
1400
1401 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1402
1403         * method-to-ir.c: remove code duplication for interface checks.
1404
1405 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1406
1407         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1408         (assembly_unload): Clear all event requests referencing the to-be unloaded
1409         assembly.
1410
1411
1412 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1413
1414         * mini.h, mini-exceptions.c: restore the state of the stack
1415         guard page permissions.
1416
1417 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1418
1419         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1420         call site patching code, it doesn't appear to be needed.
1421
1422 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1423
1424         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1425         sharing generic methods whose type arguments are a mix of reference and
1426         non-reference types. Not yet turned on.
1427
1428         * mini.c (mini_get_shared_method): New helper function to return
1429         the method which will be compiled/registered in the JIT tables when doing
1430         generic sharing.
1431         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1432         use mini_get_shared_method ().
1433
1434         * mini.c (mini_method_compile): Register the same method which is compiled when
1435         doing generic sharing.
1436
1437         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1438
1439         * generics.cs: Add partial sharing tests.
1440
1441 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1442
1443         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1444                    Add an enum value that or's all possable values together. Add an enum value
1445                    that marks the end of the used bit indexes.
1446
1447         * mini-amd64.c : Make changes to match the changes in mini.h 
1448
1449         * mini-x86.c : Make changes to match the changes in mini.h
1450
1451         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1452                    simd_version to support more simd versions. Changed the name of
1453                    simd_version to simd_version_flags to make it more intuitive that
1454                    it now contains bit flags. Reordered the *_intrinsics arrays to
1455                    match the changes above. Changed emit_intrinsics() to use the new
1456                    setup mentioned above.
1457
1458         Code is contributed under MIT/X11 license.
1459
1460 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1461
1462         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1463         remaining archs. Alpha and hppa maintainers, please stand up.
1464
1465 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1466
1467         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1468         is needed even when fail_tramp!=NULL.
1469
1470 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1471
1472         * debugger-agent.c (insert_breakpoint): Write a log message.
1473
1474 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1475
1476         * iltests.il.in: Add a few tests for LEAVE going over multiple
1477         finally clauses.
1478
1479 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1480
1481          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1482
1483 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1484
1485         * mini.h (MonoBasicBlock): Add native_length field.
1486         * mini.h (MonoCompile): Add try_block_holes field.
1487         * mini.h (MonoInst): Add exception_clause pointer to
1488         the data union.
1489
1490         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1491         * mini.c (mono_cfg_add_try_hole): New function to register possible
1492         holes in try blocks.
1493         * mini.c (create_jit_info): Fill in the holes information.
1494
1495         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1496         by a try block.
1497
1498         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1499
1500 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1501
1502         * jit-icalls.c: adjusted for the array API changes.
1503
1504 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1507
1508 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1509
1510         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1511         the 'pending' flag. This fixes support for appdomains too.
1512
1513
1514 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1515
1516         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1517
1518 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1519
1520         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1521         when using LLVM, LLVM generates it itself when needed.
1522
1523         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1524
1525         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1526         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1527         OP_ANDNPS/OP_ANDNPD.
1528
1529 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1532         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1533         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1534
1535 2010-03-11  Martin Baulig  <martin@ximian.com>
1536
1537         * debugger-agent.c (type_commands): Add NULL check to
1538         `CMD_TYPE_GET_SOURCE_FILES'.
1539
1540 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1541
1542         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1543
1544 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1545
1546         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1547         #586664.
1548
1549         * iltests.il.in: Add a test.
1550
1551 2010-03-05  Martin Baulig  <martin@ximian.com>
1552
1553         Add support for aborting invocations.
1554
1555         * debugger-agent.c
1556         (InvokeData): Added `InvokeData *last_invoke'.
1557         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1558         added a new `invoke' field to keep the `InvokeData *' throughout
1559         the invocation.
1560         (ErrorCode): Added `ERR_NO_INVOCATION'.
1561         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1562         (mono_debugger_agent_handle_exception): Don't report any exception
1563         if an abort was requested.
1564         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1565         a thread abort if necessary.
1566         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1567
1568 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1569
1570         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1571         so we can release the whole list and not just the first one. Free
1572         it in more places as well.
1573
1574 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1575
1576         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1577
1578 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1579
1580         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1581
1582 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1583
1584         * driver.c: report also other misc build options.
1585
1586 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1587
1588         * method-to-ir.c: Generate better code for the NewObject
1589         intrinsic.
1590         
1591 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1594         is disabled. Fixes #582322.
1595
1596         * iltests.il.in: Add a test.
1597
1598 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1599
1600         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1601         the handling of obj->synchronization == null and owner != current thread to
1602         mono_monitor_exit ().
1603
1604         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1605
1606
1607 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1608
1609         * mini.c: change the way emulated opcode info is stored and save about
1610         4 KB of runtime memory.
1611
1612 2010-03-04  David S. Miller  <davem@davemloft.net>
1613
1614        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1615        that don't provide the siginfo in the second signal handler argument
1616        are buggy, and this has been fixed for years.
1617        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1618        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1619
1620 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * aot-runtime.c (find_symbol): Fix a leak.
1623         (decode_patch): Ditto.
1624
1625 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1628
1629 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1632
1633 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1634
1635         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1636
1637 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1638
1639         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1640         to check for errors, it's enough to create the metadata open.
1641
1642         Fixes #562150
1643
1644 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1645
1646         * trace.c|h:
1647         * mini-exceptions.c: Add support for printing stack traces when handling
1648         exceptions, and when printing exceptions thrown while tracing also print
1649         the exception message.
1650
1651 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1652
1653         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1654         since the exclude token is a valid string character.
1655
1656 2010-03-02  Levi Bard  <levi@unity3d.com>
1657
1658         * debugger-agent.c: Invalidate thread stacks on domain unload.
1659
1660 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1661
1662         * method-to-ir.c: Emit dummy_use for stored reference after write
1663         barriers to make sure the object is pinned if the GC interrupts
1664         before the write barrier is done.
1665
1666 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1669
1670 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1671
1672         * debugger-agent.c: Add a log message printing the protocol version.
1673
1674 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1675
1676         * debugger-agent.c: Add a new command to communicate the protocol version used
1677         by the client. This could be used to allow newer runtimes to communicate with
1678         older clients.
1679
1680 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1683
1684 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1685
1686         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1687         type.
1688
1689 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1690
1691         * mini-arm.c: make the arm cpu arch configurable with the
1692         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1693         Bug #584198.
1694
1695 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1696
1697         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1698         support for the perf tool on Linux.
1699
1700 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1701
1702         * method-to-ir.c: make string.InsertenalSetChar() specialization
1703         effective.
1704
1705 2010-03-01  Robert Jordan  <robertj@gmx.net>
1706
1707         * Makefile.am: fix the non-static build.
1708
1709 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1712         here.
1713
1714 2010-02-26  Robert Jordan  <robertj@gmx.net>
1715
1716         * tasklets.c (continuation_store): Return from an error condition
1717         immediately.
1718
1719 2010-02-26  Martin Baulig  <martin@ximian.com>
1720
1721         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1722
1723         * debug-mini.c
1724         (MonoDebuggerThreadInfo): Added `internal_flags'.
1725         (MonoDebuggerInternalThreadFlags): New enum.
1726         (_mono_debugger_throw_exception): Don't signal the debugger if a
1727         type abort was requested.
1728         (_mono_debugger_unhandled_exception): Likewise.
1729         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1730         (mono_debugger_runtime_invoke): If the debugger requested a thread
1731         abort during the invocation, reset it here.
1732
1733 2010-02-26  Martin Baulig  <martin@ximian.com>
1734
1735         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1736         instead of `MonoThread *'.
1737
1738 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1741         code offsets table, as it is mostly sorted.
1742
1743 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1746         Fixes #582991.
1747
1748 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1749
1750         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1751
1752 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1753
1754         * Makefile.am: build the new ABI version of the libmono library.
1755         * debugger-agent.c, mini.c: fix warnings with the new API.
1756         * jit.h: don't depend on glib.h being included.
1757
1758 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1759
1760         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1761
1762 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1765         ThreadStatic variables.
1766
1767 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1770         data is not freed yet. Fixes #582460.
1771
1772 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1773
1774         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1775         event requests. Bump protocol minor version.
1776
1777 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1780
1781 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1782
1783         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1784         #581950.
1785
1786         * iltests.il.in: Add a test.
1787
1788 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1789
1790         * mini.c (inline_method): Check for loader errors.
1791
1792 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1793
1794         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1795         instead of mono_method_get_header as it doesn't decode locals
1796         so the called method can have unresolved dependencies that will only
1797         be satisfied after the current method is JIT'd.
1798
1799         Fixes #550968.
1800
1801 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * basic.cs (test_0_div_opt): Speed this up a bit.
1804
1805 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1808
1809         * mini.c (mono_jit_create_remoting_trampoline): Call
1810         mono_create_specific_trampoline () instead of
1811         mono_arch_create_specific_trampoline ().
1812
1813         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1814
1815 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1816
1817         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1818         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1819
1820         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1821
1822         * mini-amd64.c: Fix DISABLE_JIT support.
1823
1824 2010-02-20  Geoff Norton  <gnorton@novell.com>
1825
1826         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1827
1828 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1831         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1832         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1833         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1834         handle_exception.
1835
1836 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1837
1838         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1839         edx/ecx too. This is needed to support OP_SEQ_POINT.
1840
1841 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1842
1843         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1844
1845         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1846
1847 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1850         LLVM+AOT+exceptions, not enabled yet.
1851
1852 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1855
1856 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1857
1858         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1859         xdebug info for these.
1860
1861         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1862         in a few places.
1863
1864         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1865         not used yet.
1866
1867 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1870
1871 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1872
1873         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1874         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1875
1876         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1877         for mtouch.
1878
1879 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1880
1881         * debugger-agent.c: handle incomplete reads and EINTR in
1882         recv()/send(). This could have been causing random
1883         disconnections.
1884
1885 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1888         points.
1889
1890         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1891         so they have small offsets. Fixes #566311.
1892
1893 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1894
1895         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1896
1897 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1898
1899         * mini-amd64.c: Remove the special casing of byref in a few places now that
1900         mini_type_get_underlying_type () handles it.
1901
1902         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1903         by returning native int. Fixes #577984.
1904
1905 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1908         a macro.
1909
1910         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1911         of putting the clause itself.
1912
1913         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1914
1915 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1918         might be unaligned.
1919
1920 2010-02-10  Geoff Norton  <gnorton@novell.com>
1921
1922         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1923
1924 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1925
1926         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1927         llvm methods too.
1928
1929         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1930         it is not an LLVM generated symbol.
1931
1932         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1933
1934         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1935         implementation in gshared mode because it causes regressions.
1936
1937         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1938
1939         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1940         should be done by the caller.
1941
1942         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1943
1944         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1945
1946         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1947         since mono_jit_info_table_find () doesn't do it anymore.
1948
1949         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1950         instead of mono_jit_info_table_find ().
1951
1952 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1955
1956         * aot-compiler.c (encode_method_ref): Update after the removal of
1957         mono_gc_get_managed_allocator_type ().
1958
1959         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1960         Fixes #564538.
1961
1962 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1963
1964         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1965         generic params as well.
1966         (handle_isinst): Ditto.
1967
1968         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1969         instead of always calling an icall.
1970
1971         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1972         computing the size of the got.
1973
1974         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1975         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1976         the assembly directive '.set' so it points to the first LLVM emitted method.
1977
1978 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1979
1980         * mini.c (mini_method_verify): Report the method which failed to verify.
1981
1982 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1983
1984         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1985         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1986         runtime MS verifier.
1987
1988 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1991         #561962.
1992
1993 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * mini-llvm.c: Init the jit module only when first JITting.
1996
1997         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1998
1999         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2000
2001         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2002         replaced with the real got.
2003
2004         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2005
2006         * image-writer.c: Reduce the amount of #ifdefs a bit.
2007
2008         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2009         llvm on darwin/arm.
2010
2011         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2012
2013         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2014         global.
2015
2016 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2017
2018         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2019         (mono_llvm_emit_method): Fix unaligned stores too.
2020
2021         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2022         so async stack walks don't crash.
2023
2024 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2027         was not patched if the callee needed an rgctx trampoline.
2028
2029 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2030
2031         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2032         vtable address in AOT code.
2033
2034 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2037         MonoInst's.
2038
2039 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2040
2041         * genmdesc.pl: remove dependency on external cpp.
2042
2043 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2044
2045         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2046         using LLVM, its not needed, and abcrem can't handle it.
2047
2048 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2049
2050         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2051         it easier to group instructions and reduce duplication.
2052
2053 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * decompose.c: Move the array/soft float decompose routines here from
2056         method-to-ir.c.
2057
2058         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2059
2060 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2061
2062         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2063         to tell LLVM that the got is constant, not used yet.
2064
2065         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2066
2067 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2068
2069         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2070         managed wrappers.
2071
2072 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2073
2074         * aot-compiler.c (add_wrappers): Commit the hack which generates
2075         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2076         custom attribute.
2077
2078 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2081         a fault, only used by the LLVM backend.
2082
2083         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2084         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2085
2086         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2087         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2088
2089         * mini-llvm.c: Only generate volatile loads from load instructions which have
2090         the MONO_INST_FAULT flag set.
2091
2092 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2095         64 bit platforms.
2096
2097 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2100         sequence points. Fixes #571236.
2101
2102 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2103
2104         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2105         end of the appdomain unload process, after assemblies have been unloaded.
2106         Fixes #574842.
2107
2108 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2109
2110         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2111         works.
2112
2113         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2114         Fixes #573988.
2115
2116 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2119
2120 2010-01-26  Geoff Norton  <gnorton@novell.com>
2121
2122         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2123         with struct marshalability.
2124
2125 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2128         it supports class names as well.
2129
2130         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2131         needed by the GC map code.
2132
2133         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2134         flags if needed.
2135
2136         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2137         if cfg->init_ref_vars is set.
2138
2139         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2140         cfg->disable_initlocals_op_refs is set.
2141
2142         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2143         using liveness info if cfg->compute_precise_live_ranges is set.
2144
2145         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2146         volatile variables correctly. Add comments about the live ranges. Not enabled
2147         yet.
2148
2149 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2150
2151         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2152         0x2a into them in method prologs.
2153
2154         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2155
2156 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2157
2158         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2159         classes, since llvm is compiled with -fno-rtti.
2160
2161         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2162
2163         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2164         llvm does not require it.
2165
2166         * aot-runtime.c (load_method): Print the full name of the last aot method.
2167
2168 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2169
2170         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2171         thread has not fully started yet.
2172
2173 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2174
2175         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2176
2177 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2178
2179         * driver.c: Do not abort if LLVM is not supported, print a
2180         warning and add the information to the Mono JIT information.
2181
2182 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2183
2184         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2185         using explicit null checks.
2186
2187 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2188
2189         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2190         related code.
2191
2192         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2193         () in one place.
2194         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2195         its no longer needed.
2196
2197         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2198
2199         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2200         define for platforms still using it (s390). Get rid of the
2201         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2202
2203         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2204         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2205
2206         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2207         the caller pushed the arguments.
2208
2209         * mini-llvm.c: Enable throwing exceptions on x86.
2210
2211         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2212         "Thread (nil) may have been prematurely finalized" messages if this is called
2213         on a thread not registered with the runtime.
2214
2215         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2216
2217 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2218
2219         * jit-icalls.c (mono_array_new_3): New jit icall.
2220
2221         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2222
2223         * arrays.cs: Add a test for 3 dimensional arrays.
2224
2225 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2226
2227         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2228         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2229         used.
2230
2231         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2232         thrown on x86.
2233
2234         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2235
2236         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2237
2238         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2239
2240 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2241
2242         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2243           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2244
2245         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2246
2247         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2248
2249         Code is contributed under MIT/X11 license.
2250
2251 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2252
2253         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2254
2255         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2256
2257         * mini.c (mini_method_compile): Set the new flag when running under the
2258         debugger.
2259
2260 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2261
2262         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2263         a ref/noref value + a global pin flag, so parts of stack frames can still be
2264         precisely marked even if they include stuff which needs pinning. Improve logging.
2265         Fix many bugs. Not enabled yet.
2266
2267         * gc-test.cs: Add a few tests.
2268
2269         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2270         the normal -v options. Avoid propagating liveness information through bblocks
2271         which end with a NOT_REACHED opcode.
2272
2273         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2274         after cfg has been freed.
2275
2276 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2279         if a clause is skipped because it uses the exception object, since it could
2280         have caught the exception.
2281
2282         * exceptions.cs: Add a test.
2283
2284 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2285
2286        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2287
2288         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2289         ICollection<T> wrappers.
2290
2291 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2292
2293         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2294
2295 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2296
2297         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2298         NOMAP32BIT or optimize_for_xen is set.
2299
2300 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2301
2302         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2303         mono_metadata_str_hash () instead.
2304
2305 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2306
2307         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2308         sizeof (void*).
2309
2310         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2311
2312 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2315         flag is set.
2316
2317         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2318         throwing code correctly.
2319
2320         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2321
2322 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2325         ftnptrs created by us, handle RGCTX_FETCH correctly.
2326         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2327
2328         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2329         ftnptr added by mono_aot_get_named_code ().
2330
2331 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * mini-arm.c: Fix a few LLVM problems.
2334
2335         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2336
2337 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2338
2339         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2340         AOT compiling.
2341
2342 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2343
2344         * jit.h, method-to-ir.c: added ability to set the policy for
2345         inserting breakpoints from the break IL instruction or the
2346         Debugger.Break () API call.
2347
2348 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2349
2350         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2351         assemblies need to be eagerly loaded.
2352
2353 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2354
2355         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2356
2357 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2358
2359         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2360         an argument which matches any exception.
2361
2362 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2363
2364         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2365         optimization if the called method is gshared and marshalbyref, since gshared
2366         methods can' have wrappers. Fixes #569390.
2367
2368         * generics.cs: Add a test.
2369
2370 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2371
2372         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2373         callable from gdb.
2374
2375 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2376
2377         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2378
2379 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2380
2381         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2382         since it is not supported in win2000.
2383
2384 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2387         error if loading an assembly fails.
2388         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2389
2390         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2391         if exists.
2392
2393         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2394         compiled methods.
2395
2396         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2397
2398         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2399         is not supported yet.
2400
2401         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2402
2403 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2404
2405         * method-to-ir.c: All types with variant arguments must fallback to the
2406         slow path. This makes cast of variant delegates work.
2407
2408         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2409         argument that is set to TRUE is the returned vtable slot is for a variant
2410         interface. Changed a g_print + g_assert_not_reached to a g_error.
2411
2412         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2413         a similar fashion of generic virtual methods.
2414
2415 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2416
2417         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2418         when cfg is null.
2419
2420         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2421         method using a variance aware function.
2422
2423         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2424
2425 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2426
2427         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2428         do an icall for now.
2429
2430 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2433         If LLVM decides to set the code model to Large, reset it to Default.
2434
2435 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2438         stripped binaries as well.
2439
2440 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2441
2442         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2443         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2444
2445         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2446         reg.
2447
2448 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2449
2450         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2451         separate function.
2452
2453         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2454         as the type info to llvm.eh.selector.
2455         (exception_cb): Use the type info for filling out some fields of
2456         MonoJitExceptionInfo like the flags and the exception class. This is needed
2457         because the LLVM produced exception handling clauses might not match the original
2458         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2459
2460         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2461         separate function. Add an extra argument which returns the type infos
2462         corresponding to the exception clauses.
2463
2464         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2465         exception handling clauses.
2466
2467 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2468
2469         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2470         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2471         to fix an AOT case.
2472
2473 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2474
2475         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2476         internal assembly.
2477
2478 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2481         llvm code.
2482
2483 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2484
2485         * mini.c (mini_method_compile): Verify the method before calling
2486         mono_compile_create_vars as this might crash since it uses method
2487         information.
2488
2489         Fixes #560196.
2490
2491 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2492
2493         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2494         one case if AOTing, since the class might not be a concrete class.
2495
2496 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2499         functions which are now defined in mempool-internals.h.
2500
2501         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2502
2503         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2504
2505 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2506
2507         * mini.c:
2508         * method-to.ir.c:
2509         * mini-*.c: Properly handle generic enums.
2510
2511         Fixes #566294
2512
2513 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2516         in a few more places.
2517
2518 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2521         nullable parameters. Fixes #567351.
2522
2523 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2524
2525         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2526
2527 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2530         mono_get_generic_context_from_code () call.
2531
2532         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2533
2534 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2537         needed.
2538
2539 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2540
2541         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2542         mono_method_get_signature returns NULL. Fix #567084
2543
2544 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2545
2546         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2547         instead of once for each module.
2548
2549 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * debugger-agent.c (ss_start): Implement step over for the last sequence
2552         point in methods.
2553
2554         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2555         have the STEP_LOC flag set.
2556
2557         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2558         fails. Fixes #566689.
2559
2560 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2561
2562         * mini.c (mono_add_seq_point): New helper function.
2563         (mono_save_seq_point_info): New function to save sequence point info, extracted
2564         from mini_method_compile ().
2565
2566         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2567
2568         * mini.h (MonoSeqPointInfo): New structure containing information about
2569         the sequence points of a JITted method.
2570         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2571         'bucket' field.
2572
2573         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2574         point information is stored, use a MonoSeqPointInfo structure instead of a
2575         GPtrArray. For each seq point, compute a list of successor seq points.
2576
2577         * debugger-agent.c: Use the successor list to implement step-over more
2578         efficiently: instead of single stepping until a different line/IL offset is
2579         reached, place breakpoints into all successor seq points.
2580
2581         * mini.h: Bump AOT file format version.
2582
2583 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2584
2585         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2586
2587         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2588
2589 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2592         build.
2593
2594 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2597         alloca as g_malloc is not signal safe.
2598
2599 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2602         VALGRIND_DISCARD_TRANSLATIONS.
2603
2604         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2605         checks, they are no longer needed.
2606
2607         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2608         a function into a sigctx which can handle function pointers.
2609
2610         * mini-ppc.c: Implement soft debugger support on ppc64.
2611
2612         * mini-ppc.c: Implement soft debugger support.
2613
2614 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2617
2618 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2619
2620         * mini.c (mono_get_runtime_build_info): include Mono version in
2621         the returned value.
2622
2623         * driver.c (mono_main): VERSION is now included in the string
2624         returned from mono_get_runtime_build_info()
2625
2626 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2629         signatures. Fixes #565143.
2630
2631         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2632
2633 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2634
2635         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2636
2637 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2638
2639         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2640         making max stack 10x smaller.
2641
2642 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2643
2644         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2645
2646 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2647
2648         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2649
2650 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2651
2652         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2653         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2654
2655         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2656
2657         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2658
2659         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2660
2661         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2662         the compilation.
2663
2664 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2665
2666         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2667         raise an invalid program exception.   
2668
2669         For other opcodes that we might not handle use a g_warning and
2670         raise the exception.   Beats termination.
2671
2672         Fixes #561724
2673
2674 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2675
2676         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2677
2678         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2679         by merging the LLVM and !MAP_32BIT cases.
2680
2681 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2682
2683         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2684         sigctx being passed in, as we have no CONTEXT available in the APC.
2685
2686         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2687         for now.
2688
2689         Code contributed under MIT/X11 license.
2690
2691 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2692
2693         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2694         in the LLVM backend on AMD64.
2695
2696         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2697         FDE.
2698
2699         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2700
2701         * mini-llvm.c: Export mono_personality for AOT.
2702
2703         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2704
2705         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2706         implicit exception can occur.
2707
2708         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2709         OP_IMPLICIT_EXCEPTION instruction.
2710
2711         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2712
2713         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2714
2715         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2716         inside a protected block.
2717
2718         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2719         trampolines doesn't include the argument.
2720
2721         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2722         trampolines on amd64.
2723
2724         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2725         of RDI.
2726
2727         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2728         disabled for methods with clauses.
2729
2730         * mini-llvm.c: Enable support for catch clauses.
2731
2732         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2733         end of an LLVM compiled finally clause.
2734         (mono_handle_exception_internal): Save the exception handling state in TLS
2735         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2736         resume unwinding from that point.
2737
2738         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2739         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2740         to obtain the addresses of the exception handling regions.
2741
2742         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2743         finally clauses are supported.
2744
2745         * mini.c (mini_method_compile): Add support for LLVM code with exception
2746         handlers.
2747
2748 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2749
2750         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2751         proper size.
2752
2753 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2756         as a primitive type.
2757
2758 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2759
2760         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2761         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2762         #564000.
2763
2764 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2765
2766         * method-to-ir.c (mini_redirect_call): do not redirect the
2767         InternalAllocateStr internal call if string profiling is enabled.
2768
2769 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2772         generic methods.
2773
2774         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2775         unwind.h header file.
2776
2777         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2778         newer valgrind versions seems to handle this fine.
2779
2780 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2781
2782         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2783         on the debugger thread.
2784
2785 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2786
2787         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2788
2789         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2790
2791         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2792
2793         * cpu-<ARCH>.md: Make call_handler clob:c.
2794
2795         * mini.c: Reenable SSA for methods with clauses.
2796
2797         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2798         as it causes failures on x86.
2799
2800 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2801
2802         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2803         returns NULL (e.g. a bad assembly).
2804
2805 2009-12-08  Geoff Norton  <gnorton@novell.com>
2806
2807         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2808         stepping out into native code.  There were issues with nested invokes
2809         like .cctors.
2810
2811 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2812
2813         * mini.c (mini_method_compile): Do the disable_llvm checks early
2814         and avoid the LLVM compile pass if the checks fail.
2815
2816         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2817
2818         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2819         LLVM optimizations don't try to remove them.
2820
2821         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2822         different file so the original remains.
2823
2824 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2825
2826         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2827
2828         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2829
2830         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2831         support for non-inline unwind descriptors.
2832
2833 2009-12-07  Geoff Norton  <gnorton@novell.com>
2834
2835         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2836         the interrupt_count slightly differently.  Native threads were never
2837         marked as resumed.
2838
2839 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2840
2841         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2842         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2843         yet generate this info.
2844
2845         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2846
2847         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2848         client can distinguish between intptrs and longs.
2849
2850 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2851
2852         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2853         blob.
2854
2855         * aot-runtime.c (load_function): Update after the change above.
2856
2857         * mini.h: Bump AOT file format version.
2858
2859         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2860         if the delegate class is dynamic.
2861
2862         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2863         in gshared code too using the new rgctx info type
2864         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2865
2866 2009-12-04  Geoff Norton  <gnorton@novell.com>
2867
2868         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2869         we need to track the original suspend count so the thread properly
2870         wakes up in resume_thread.
2871
2872 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2875         code.
2876
2877         * generics.cs: Add a test.
2878
2879         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2880         is 0. Simplify a lot of code using this.
2881
2882         * mini-trampolines.c (mono_delegate_trampoline): Call
2883         mono_create_static_rgctx_trampoline () before saving the final address in
2884         delegate->method_code, to avoid calling it each time a delegate is first called.
2885
2886         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2887         which need static rgctx trampolines.
2888
2889         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2890         keyed on the method+addr pair, since addr could be either the method addr or
2891         an unbox trampoline in the AOT case. Fixes #560246.
2892
2893 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2896         place it was called before too.
2897
2898 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2899
2900         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2901         if no security manager is present, to speed up the AOT case. Call
2902         mono_class_vtable () full with raise_on_error == TRUE instead.
2903
2904 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2905
2906         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2907         the local optimization passes can take its result into account. Fixes
2908         #559876.
2909
2910         * exceptions.cs: Add a test.
2911
2912 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2913
2914         This patch is contributed under the terms of the MIT/X11 license
2915
2916         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2917
2918 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2921
2922         * debugger-agent.c: Rework the handling of stack traces of running threads to
2923         avoid crashes if compute_frames () tries to walk the stack of running thread.
2924
2925         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2926
2927         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2928
2929         * mini.h (StackFrameInfo): Add an 'lmf' field.
2930
2931 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * debugger-agent.c (suspend_current): Always set really_suspended.
2934
2935         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2936
2937         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2938
2939 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2942         really suspended.
2943
2944 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2945
2946         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2947
2948 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2949
2950         * mini-trampolines.c: Fix MSVC build.
2951
2952 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2953
2954         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2955
2956 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2957
2958         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2959         the instruction following an OP_FCOMPARE is optimized away.
2960
2961 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2962
2963         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2964         emit_autoreg () into this arch-specific function.
2965
2966         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2967         code, it is no longer needed.
2968
2969         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2970
2971         * mini.h: Bump AOT file format version.
2972
2973         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2974         using the sorted_code_offsets array, instead of reading it from the
2975         exception debug info.
2976         (load_method): Call mono_aot_find_jit_info instead of
2977         decode_exception_debug_info ().
2978
2979         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2980         LLVM compiled as a flag.
2981
2982 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2983
2984         * debugger-agent.c (resume_thread): Fix a warning.
2985
2986         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2987         generated.
2988
2989 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2992         contents to MonoAotFileInfo.
2993
2994 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2995
2996         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2997         Put all binary data into a giant blob, similarly to the way .net assemblies
2998         store binary data. Emit offset tables in a compact form to reduce their size.
2999
3000         * mini.h: Bump AOT file format version.
3001
3002         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3003         places.
3004
3005         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3006         avoid linear searches at runtime.
3007
3008         * aot-runtime.c (find_symbol): Update this to use the hash.
3009
3010         * mini.h: Bump AOT file format version.
3011
3012 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3015         container.
3016
3017         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3018         too.
3019
3020         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3021         the distribution of got slot types.
3022
3023         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3024
3025         * method-to-ir.c: Add support for generating explicit null checks.
3026
3027 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3028
3029         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3030         on a random thread if possible.
3031
3032         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3033         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3034         correctly.
3035
3036         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3037         regs. Pass the real size of the regs array to mono_unwind_frame ().
3038
3039         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3040         ones instead.
3041
3042 2009-11-24  Geoff Norton  <gnorton@novell.com>
3043
3044         * mini-darwin.c: Work around apple bug rdar://7209349  See
3045         http://openradar.appspot.com/7209349 for details.  Synopsis,
3046         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3047         never been initialized before.
3048
3049 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3050
3051         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3052
3053         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3054
3055 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3056
3057         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3058         OP_SHL_IMM is not 32 bit.
3059
3060 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3063
3064 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3065
3066         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3067         encountered.
3068
3069         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3070         > 0 since some threads can resume if their resume_count is > 0.
3071         (invoke_method): Avoid reading freed memory.
3072
3073         * debugger-agent.c (process_suspend): Extract the suspend code from
3074         process_single_step_inner () to a separate function. Rework the code to prevent
3075         races between this function and thread interrupts.
3076
3077         * debugger-agent.c (suspend_current): Check the resume_count field instead
3078         of resume_one so suspends+resumes during single threaded invokes work
3079         correctly.
3080
3081 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3082
3083         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3084         to make the generated code smaller.
3085
3086         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3087         sequence generated by recent LLVM versions.
3088
3089         * mini-llvm.c: Add support for a few simple cases which weren't supported
3090         before.
3091
3092         * mini-trampolines.c (mono_magic_trampoline): Don't call
3093         mono_arch_get_vcall_slot () when llvm is enabled.
3094
3095         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3096
3097         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3098         into a new function called common_call_trampoline () which is used by the
3099         llvm vcall trampoline as well.
3100
3101         * debugger-agent.c: Implement single threaded invokes.
3102
3103         * debugger-agent.c: Revert change which broke the agent on linux.
3104
3105         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3106         #557606.
3107
3108         * generics.cs: Add a test.
3109
3110 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3111
3112         * debugger-agent.c: Fix the cygwin build.
3113
3114 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3115
3116         * cprop.c: Remove this unused file.
3117
3118 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3119
3120         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3121         #557262.
3122
3123         * basic.cs: Add a test.
3124
3125 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3126
3127         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3128         in one more place.
3129
3130 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3131
3132         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3133         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3134         it. Use this flag to control llvm related code paths instead of #ifdef
3135         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3136         AOT code.
3137
3138         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3139
3140         * mini.h: Bump AOT file format version.
3141
3142         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3143         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3144
3145         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3146         was used as an assembly filter.
3147
3148 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3149
3150         * unwind.c: Fix support for ppc.
3151
3152         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3153         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3154
3155 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3156
3157         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3158         port.
3159         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3160         added by the ps3 changes.
3161
3162 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3163
3164         * mini-gc.c: Resurrect this, so at least it compiles.
3165
3166         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3167
3168 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3171         create_event_list () so assembly filters can be used.
3172
3173         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3174         from the LMF.
3175
3176 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3177
3178         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3179         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3180         is disabled.
3181
3182         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3183         classes for char/bool too.
3184
3185         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3186
3187         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3188         used.
3189
3190         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3191         Fix warnings.
3192
3193 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3194
3195         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3196         
3197         Code contributed under MIT/X11 license.
3198
3199 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3200
3201         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3202         threads in native code work.
3203
3204         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3205         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3206         version.
3207
3208 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3209
3210         * debugger-agent.c: Implementation for Windows platform.
3211
3212         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3213         primitives. Use SEH to implement breakpoints and single stepping.
3214
3215         * mini-x86.h: Enable soft debugger on Windows.
3216
3217         Code contributed under MIT/X11 license.
3218
3219 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3222         under XEN. Fixes #522894.
3223
3224         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3225
3226         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3227         interface calls in LLVM AOT code.
3228
3229         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3230         is found.
3231
3232         * mini-llvm.c: Add support for OP_VPHI.
3233
3234         * objects.cs: Add a test.
3235
3236 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3237
3238         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3239         this is called on the debugger thread.
3240
3241 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3242
3243         * mini-llvm.c: Add soft-float support.
3244
3245         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3246         FCALL which returns an R4.
3247
3248         * driver.c (mono_main): Add a missing '\n'.
3249
3250         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3251         platforms which doesn't support the LLVM IMT trampoline.
3252
3253 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3254
3255         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3256
3257         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3258
3259         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3260         virtual calls.
3261
3262         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3263
3264 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3267         Instead of emitting a method_order table, sort the contents of the code_offsets
3268         table and do a binary search in the sorted table. The previous approach doesn't
3269         work with LLVM which emits methods in a arbitrary order.
3270
3271         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3272         in the .eh_frame section in ELF files.
3273
3274         * mini.h: Bump corlib file format version.
3275
3276         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3277
3278         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3279         LDMIA->LDM macro name change.
3280
3281 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3282
3283         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3284         x86.
3285
3286         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3287         SVN.
3288
3289         * aot-compiler.c: Ditto.
3290
3291         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3292         &align to mini_type_stack_size_full ().
3293
3294         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3295
3296         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3297
3298 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3299
3300         * mini-arm.c: Compute the stack space used by arguments using
3301         mini_type_stack_size_full ().
3302
3303 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3304
3305         * optflags-def.h: Remove dead TREEPROP optimization.
3306
3307 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3308
3309         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3310
3311         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3312
3313 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * driver.c (mono_jit_parse_options): New public API function to parse options
3316         as done by the runtime executable.
3317
3318         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3319         when handling named arguments.
3320
3321 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3322
3323         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3324         for passing small vtypes in registers, make the CallInfo structures more
3325         similar to the code on the other platforms.
3326
3327         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3328         the code in the prolog requires it.
3329
3330 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3331
3332         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3333         (koush@koushikdutta.com).
3334
3335         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3336         where the thunk memory should be allocated from. Fixes appdomain unloading
3337         on arm.
3338
3339 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3340
3341         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3342         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3343
3344 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3345
3346         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3347         AOT, as it is not implemented yet.
3348
3349         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3350
3351 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3352
3353         * debugger-agent.c: Fix windows build.
3354
3355 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3358         after the client connects/disconnects.
3359
3360         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3361         when an exception of a given type is thrown.
3362
3363         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3364         only on an uncaught exception.
3365
3366         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3367
3368         * debugger-agent.c: Add a 'launch' option.
3369
3370 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3371
3372         * debugger-agent.c: Add a 'timeout' option.
3373
3374 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3375
3376         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3377         the JDWP agent.
3378
3379 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3380
3381         * debugger-agent.c (set_breakpoint): Emit a log message.
3382
3383 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3384
3385         * mini-arm.c: Fix the arm build.
3386
3387 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3388
3389         * aot-compiler.c: don't leak the value returned from
3390         mono_type_full_name().
3391
3392 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3393
3394         * debugger-agent.c: defer including mono-mutex.h until we know the
3395         agent is supported.
3396
3397 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3398
3399         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3400         of pthreads directly.
3401
3402         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3403         exception handlers. Pass info argument.
3404
3405         * mini.h: Adjust signatures of soft debugger functions to pass void*
3406         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3407
3408         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3409         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3410         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3411         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3412
3413         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3414
3415         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3416         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3417         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3418         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3419
3420         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3421
3422         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3423
3424         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3425
3426         * mono-semaphore.h: Skeleton implementation for Windows.
3427
3428         Code contributed under MIT/X11 license.
3429
3430 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3431
3432         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3433
3434         Code contributed under MIT/X11 license.
3435
3436 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3437
3438         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3439
3440         Code contributed under MIT/X11 license.
3441
3442 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3445         debug info to 100 because 10 still slows down gdb too much.
3446
3447         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3448         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3449         them in the wrappers.
3450
3451 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3454
3455         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3456
3457         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3458         function mono_aot_get_array_helper_from_wrapper ().
3459
3460         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3461         array helper methods.
3462
3463 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3464
3465         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3466         the value was loaded from memory.
3467
3468         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3469         the value was loader from there.
3470
3471         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3472         without constant swizzle.
3473
3474 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3475
3476         * mini-amd64.c: Put soft debugger functions behind a
3477         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3478
3479         * mini-amd64.h: disable the soft debugger in windows.
3480
3481         Code contributed under MIT/X11 license.
3482
3483 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3484
3485         * mini-x86.c: Put soft debugger functions behind a
3486         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3487
3488         Code contributed under MIT/X11 license.
3489
3490 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3491
3492         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3493         to mono_arch_find_jit_info_ext.
3494
3495         Code contributed under MIT/X11 license.
3496
3497 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3498
3499         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3500
3501         * debugger-agent.c: Add support for filtering events by assemblies.
3502
3503         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3504         the agent is not enabled.
3505
3506 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3507
3508         * exceptions-x86.c: hopefully last change to fix the windows build.
3509         This one courtesy of Jonathan Chambers.
3510
3511 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3512
3513         * debugger-agent.c: remove unused function.
3514
3515 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3516
3517         * debugger-agent.c: add #ifdefs for a few header files.
3518         * mini-x86.h: disable the soft debugger in windows.
3519         Step 1 of 2 to make this compile on windows with gcc.
3520
3521 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3522
3523         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3524         as it breaks the build.
3525
3526 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3527
3528         Merge the soft debugger branch.
3529
3530         * debugger-agent.h debugger-agent.c: New files containing the soft
3531         mode debugger module.
3532
3533         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3534         at the appropriate locations.
3535
3536         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3537         opcode.
3538
3539         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3540         enable/disable single stepping.
3541
3542         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3543         which returns all information in a StackFrameInfo structure, and can handle the
3544         LMF frames added by the debugger.
3545
3546         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3547         about an LMF frame.
3548
3549         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3550         walker function which works on a specific thread and passes a StackFrameInfo
3551         structure to its callback.
3552
3553         * mini.c (mini_init): Initialize the debugger agent.
3554
3555         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3556
3557         * mini-ops.h: Add OP_SEQ_POINT opcode.
3558
3559         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3560         arguments to the debugger agent.
3561
3562 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3563
3564         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3565         speed things up.
3566
3567         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3568
3569         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3570
3571         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3572
3573         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3574         if needed.
3575         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3576         sets the IMT argument and makes a virtual call.
3577
3578         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3579
3580 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3581
3582         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3583         the windows build.
3584
3585 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3586
3587         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3588         runtime. Fixes #551228.
3589
3590 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3591
3592         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3593
3594         * basic.cs: Add a test.
3595
3596         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3597         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3598         CONSTRAINED. Fixes #550964.
3599
3600         * generics.cs: Add a test.
3601
3602 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3603
3604         * mini-posix.c (add_signal_handler): Use
3605         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3606
3607 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3608
3609         Contributed under the terms of the MIT/X11 license by
3610         Jerry Maine <crashfourit@gail.com>.
3611
3612         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3613         sse4a for simd intrinsics.
3614
3615         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3616         sse4a for simd intrinsics.
3617
3618 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3619
3620         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3621         instead of inst_p1 which is not the same on ILP32 platforms.
3622
3623 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3624
3625         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3626         not the mscorlib one before calling mono_get_lmf_addr.
3627
3628         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3629         of the ip to the LMF.
3630
3631         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3632         immediate in the op->op_imm optimization.
3633
3634         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3635         understand. VTypes now work, but are not abi compliant, as they are
3636         split into 4 byte parts instead of 8.
3637         (emit_memcpy): Fix the unrolled case to work on the PS3.
3638
3639         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3640
3641         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3642         the default when static linking.
3643
3644         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3645
3646         * aot-compiler.c: Add an autoreg option to automatically register
3647         statically linked aot modules using ELF .ctors.
3648
3649         * genmdesc.pl: Add __ppc64__ to allowed defines.
3650
3651 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3652
3653         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3654         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3655
3656 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3657
3658         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3659
3660 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3661
3662         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3663         which will contain the domain where the method was found.
3664
3665         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3666         mini_jit_info_table_find ().
3667
3668         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3669
3670         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3671
3672 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3673
3674         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3675         set, its not supported yet.
3676
3677 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3678
3679         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3680         iface wrapper is not found.
3681         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3682
3683 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3684
3685         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3686         which have a different name.
3687
3688         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3689         wrappers and Array.GetGenericValueImpl ().
3690
3691         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3692         because of the change above.
3693
3694         * generics.cs: Add a test for full aot + generic array ifaces.
3695
3696 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3697
3698         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3699         that hides the previous one.
3700
3701 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3702
3703         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3704         marshalled. Fixes #541623.
3705
3706 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3707
3708         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3709
3710 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3711
3712         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3713
3714 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3715
3716         * mini-posix.c (sigprof_signal_handler):
3717         Implemented support for building stat call chans in different ways.
3718
3719 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3720
3721         * mini-exceptions.c (mono_find_jit_info):
3722         Also check that a jit info has been found (fixes a profiler crash).
3723
3724 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3725
3726         * mini.c (mono_codegen):
3727         Call mono_profiler_code_buffer_new with correct code address.
3728
3729 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * driver.c (mono_main): Change the date in the copyright.
3732
3733 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3734
3735         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3736         allocator in shared generic code for open classes, because we
3737         can't get those classes' vtables.  We need to make managed
3738         allocators not depend on the vtable at compile-time to solve this.
3739
3740 2009-10-13  Martin Baulig  <martin@ximian.com>
3741
3742         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3743         `const guint8 *trampoline' argument; send both the old and the new
3744         notification.
3745
3746 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3749         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3750         (can_marshal_struct): Skip structures with auto layout.
3751
3752         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3753
3754 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3757         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3758         a variable to hold the stack slot used by the int<->float conversion opcodes.
3759
3760         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3761
3762 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3763
3764         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3765         when using full-aot.
3766
3767 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3768
3769         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3770         each instance of Comparer<T>.
3771
3772         * generics.cs: Add a new test.
3773
3774 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3775
3776         * driver.c (parse_debug_options): Add a 'gdb' option.
3777
3778         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3779
3780         * image-writer.c: Add support for emitting the image into a memory buffer.
3781
3782         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3783
3784         * aot-compiler.c: Add support for registering debug info with GDB using the
3785         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3786         MONO_XDEBUG to 'gdb'.
3787
3788 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3789
3790         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3791         gdb mode.
3792
3793 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3794
3795         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3796         can be used to set breakpoints in gdb.
3797
3798         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3799         segment to an absolute address.
3800
3801 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3802
3803         * method-to-ir.c: Use the managed array allocator method if
3804         available.
3805
3806 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3807
3808         * aot-compiler.c : Fix the MSVC builds
3809
3810         Code is contributed under MIT/X11 license.
3811
3812 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3813
3814         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3815         avoid registering 1 symbol file per method with gdb.
3816
3817 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3818
3819         * mini-sparc.c: Fix the handling of enums with base type long.
3820
3821         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3822
3823         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3824         instead of using type->data.klass as the later doesn't work with generics.
3825
3826 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3827
3828         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3829         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3830         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3831         works differently now and we don't handle it in the JIT anymore.
3832
3833         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3834         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3835         the Thread class split.
3836
3837 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3838
3839         * driver.c: Don't run tests with the obsolete treeprop optimization.
3840
3841         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3842         variable volatile. Fixes #541577.
3843
3844         * basic-calls.cs: Add a new test.
3845
3846         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3847
3848 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3849
3850         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3851         work/required with recent iphone sdk versions.
3852
3853         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3854         structures.
3855
3856         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3857         in the VCALL decomposition code.
3858
3859 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3860
3861         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3862
3863         * basic.cs: Add a test.
3864
3865         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3866         generic invokes.
3867
3868         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3869         searches all the domains of the current thread.
3870
3871         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3872
3873 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3874
3875         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3876         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3877
3878         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3879         for non-jit trampolines.
3880
3881         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3882
3883         * aot-compiler.c (add_wrappers): Ditto.
3884
3885         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3886         the size of the param area used by dyn_call to 6 which covers the majority of
3887         methods.
3888
3889         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3890
3891         * mini-arm.c: Implement support for passing/receiving
3892         longs and receiving floats in the dyn_call code.
3893
3894         * mini-amd64.c: Implement support for receiving vtypes in registers in
3895         the dyn_call code.
3896
3897         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3898         the dyn_call code.
3899
3900 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * mini-arm.c (get_call_info): Return more precise information in
3903         ArgInfo->regtype.
3904         (dyn_call_supported): Use the information in CallInfo.
3905
3906         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3907
3908         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3909         code.
3910
3911         * mini-arm.c: Update after the dyn_call api changes.
3912
3913         * mini.c (mini_create_jit_domain_info): Register a destructor function
3914         for the runtime_invoke_hash.
3915
3916         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3917         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3918         this function.
3919         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3920         (dyn_call_supported): Simplify this by using get_call_info ().
3921         (mono_arch_dyn_call_free): New destructor function.
3922
3923         * generics.cs: Remove a printf.
3924
3925         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3926
3927         * mini-arm.c: Add support for enum return values and passing a few arguments
3928         on the stack.
3929         
3930         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3931         dyn invoke.
3932
3933         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3934
3935         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3936         the dynamic invoke wrappers.
3937
3938         * mini-arm.c: Implement OP_DYN_CALL for arm.
3939
3940         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3941         supported by the dynamic runtime invoke wrapper.
3942
3943         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3944         runtime invoke wrapper.
3945
3946         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3947         if possible when running with full-aot.
3948
3949         * mini-ops.h: Add OP_DYN_CALL opcode.
3950
3951         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3952         with dynamic arguments lists similar to libffi.
3953
3954 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3955
3956         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3957         
3958         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3959         to NEWARR.
3960
3961         * iltests.il.in: Add a new test.
3962         
3963 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3964
3965         * aot-compiler.c (add_generic_instances): Add more instances of
3966         GenericEqualityComparer.
3967
3968 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3969
3970         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3971
3972 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3973
3974         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3975         comments on some functions that now can fail.
3976
3977 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3978
3979         * Makefile.am: Add Info.plist to EXTRA_DIST
3980
3981 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3982
3983         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3984         static synchronized wrappers. Fixes #539500.
3985
3986 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3987
3988         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3989         properly.
3990
3991 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3992
3993         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3994         lmf before calling filter clauses as well. Fixes #539550.
3995
3996         * exceptions.cs: Add a test.
3997         
3998 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3999
4000         * aot-compiler.c (add_generic_class): Add instances of
4001         Array.GetGenericValueImpl as well.
4002
4003         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4004         can be tested too.
4005
4006         * generics.cs: Add a fullaot linq test.
4007
4008 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4009
4010         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4011         reg r1 on arm.
4012
4013 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4014
4015         * mini-trampolines.c (mono_delegate_trampoline) : Call
4016           mono_cominterop_get_invoke if the delegate target object
4017           is a COM object.
4018
4019         Code is contributed under MIT/X11 license.
4020
4021 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4022
4023         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4024         internal call is defined outside platform code. Reduce code 
4025         duplication with existing [Method|Field]AccessException
4026
4027 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4028
4029         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4030         if the return value is a small struct passed on regs.
4031
4032 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4033
4034         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4035
4036         * mini-codegen.c: Enable the cpu description validation for arm.
4037
4038 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4039
4040         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4041         test which depends on structs to objects.cs.
4042         
4043         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4044         require object model related stuff working.
4045
4046         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4047
4048         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4049
4050         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4051         against the instruction metadata in mini-ops.h. amd64 only for now.
4052
4053         * mini-ops.h: Fix some instruction descriptions.
4054
4055         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4056         unused instructions.
4057
4058 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * exceptions.cs: Add a new test.
4061
4062 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4063
4064         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4065
4066 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4067
4068         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4069         skip empty phi opcodes.
4070         
4071         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4072         correctly by zero extending after loads. Skip methods containing calls
4073         to the monitor enter/exit trampolines.
4074
4075         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4076         when calling mono_thread_force_interruption_checkpoint ().
4077
4078         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4079
4080         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4081         64 bit thunks.
4082         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4083
4084         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4085         bootstrap could run.
4086
4087 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4088
4089         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4090
4091 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4094         of the method to
4095         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4096         LLVM might be very short.
4097
4098         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4099         in OP_THROW/RETHROW.
4100
4101         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4102         alignment on osx.
4103
4104 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4107         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4108         LLVM might be very short.
4109
4110 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4111
4112         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4113         the alignment for the value of sp.
4114
4115 2009-09-01  Geoff Norton  <gnorton@novell.com>
4116
4117         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4118         managed wrappers in full aot.
4119
4120 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4123
4124 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4125
4126         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4127
4128 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4129
4130         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4131
4132         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4133         saved info.
4134
4135         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4136
4137         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4138         depend on the info MonoMethodHeader which could be missing in IL stripped
4139         assemblies.
4140
4141 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4142
4143         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4144         they are only 4 byte aligned.
4145
4146 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4149         was done previously, since using SP causes too many problems.
4150
4151         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4152         frames without a frame pointer works.
4153
4154         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4155         global register in methods with calls, since the calls can go through
4156         a static rgctx trampoline which doesn't save it.
4157
4158 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4161
4162 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4165
4166 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4167
4168         * method-to-ir.c: Fix warnings for uninitialized variables.
4169
4170 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4171
4172         * mini-exceptions.c:
4173         * aot-compiler.c: Fix printf warnings.
4174
4175 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4176
4177         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4178         Add GetGenericValueImpl<string>.
4179         
4180         * aot-compiler.c (add_generic_instances): Add instances of
4181         GenericEqualityComparer<T> for primitive types. Only emit the array
4182         wrappers into the mscorlib image.
4183
4184 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4185
4186         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4187         the methods_loaded array using amodule->info->nmethods.
4188
4189         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4190         (MONO_AOT_FILE_VERSION): Bump this.
4191
4192         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4193         to work.
4194
4195         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4196         MonoJitInfo doesn't belong to its methods aot image.
4197
4198 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4199
4200         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4201
4202         * mini-arm.c: Fix warnings.
4203         
4204         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4205
4206         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4207         supports it.
4208
4209 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4212         avoid clobbering IP.
4213
4214         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4215         hold the trampoline argument, so its initial value is available during
4216         debugging.
4217
4218 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4219
4220         * exceptions-arm.c:
4221         * exceptions-hppa.c:
4222         * mini.c:
4223         * exceptions-s390x.c:
4224         * exceptions-mips.c:
4225         * exceptions-ppc.c:
4226         * exceptions-sparc.c:
4227         * exceptions-alpha.c:
4228         * aot-runtime.c:
4229         * mini-trampolines.c:
4230         * exceptions-x86.c:
4231         * exceptions-s390.c: add and use #define's instead of sizeof()
4232         for MonoJitInfo and MonoJitInfoTable.
4233
4234 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4235
4236         * tramp-arm.c:
4237         * tramp-amd64.c:
4238         * tramp-ppc.c:
4239         * tramp-x86.c: use a #define instead of sizeof() for a few
4240         structures that use a zero-length array.
4241
4242 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4243
4244         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4245         case when the method is dynamic. Fixes #529238.
4246
4247 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4250         of asserting when a method is JIT compiled in full-aot mode.
4251
4252 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4253         
4254         Contributed under the terms of the MIT/X11 license by
4255         Jerry Maine <crashfourit@gail.com>.
4256         
4257         * fixed wrong dates in changelog.
4258
4259 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4260         
4261         Contributed under the terms of the MIT/X11 license by
4262         Jerry Maine <crashfourit@gail.com>.
4263
4264         * basic-simd.cs: added test for packed double square root.
4265         * cpu-amd64.md: added opcode info for packed double square root.
4266         * cpu-x86.md: added opcode info for packed double square root.
4267         * mini-ops.h: added IR opcode for packed double square root.
4268         * mini-x86.c: added IR to native translation code for packed double square root.
4269         * mini-amd64.c: removed todo for packed double square root.
4270         * simd-intrinsics.c: added method to IR opcode converstion for
4271         packed double square root.
4272
4273 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4274
4275         Contributed under the terms of the MIT/X11 license by
4276         Jerry Maine <crashfourit@gail.com>.
4277
4278         * mini-amd64.c: Added a change to help tell the difference as 
4279         to what perpose the xmm register is being used--mainly to help
4280         with debuging.
4281         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4282         (one used for special cases) xmm registers for both fp
4283         and simd ops. Added define to turn on new feature in the regalloc
4284         that allows fp and simd ops to share the xmm regs happily.
4285         * codegen.c: Added code to detect for which perpose an xmm reg is
4286         being used (fp or simd) and to translate back and forth to the
4287         correct logical reg bank (fp or simd) for 'spill load's.
4288
4289 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4290
4291         Contributed under the terms of the MIT/X11 license by
4292         Jerry Maine <crashfourit@gail.com>.
4293
4294         * basic-simd.cs: Added tests for stressing the regalloc when running with
4295         16 simd regs and when simd and fp ops share the same reg bank.
4296
4297 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4298
4299         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4300         in shared generic code, we might have to look up the class in the
4301         RGCTX.  If we use the class directly, compute its GC descriptor.
4302
4303 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4304
4305         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4306
4307 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4308
4309         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4310         check for errors. Fixed the case when the class with the Main
4311         method is broken.
4312
4313 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4314
4315         Contributed under the terms of the MIT/X11 license by
4316         Jerry Maine <crashfourit@gail.com>.
4317
4318         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4319
4320 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4321
4322         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4323
4324 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4325
4326         * method-to-ir.c: Fix naming of stelem and ldelem.
4327
4328 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4329
4330         * driver.c (main_thread_handler): Check that the assembly loaded
4331         matches the filename when doing AOT.
4332
4333 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4334
4335         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4336         call it anymore.
4337
4338         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4339         utils/mono-sigcontext.h).
4340
4341         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4342         #ifdef.
4343
4344 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4345
4346         * mini.c (mono_codegen):
4347         Call profiler hook to keep track of method code buffers.
4348
4349 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4350
4351         * method-to-ir.c: Invoke write barriers for the
4352         Interlocked.(Compare)Exchange JIT intrinsics.
4353
4354 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4355
4356         * Makefile.am (version.h): Fix issues when built out of tree.
4357         Remove some redundant 'grep's piped through 'sed's.
4358
4359 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4360
4361         This patch is contributed under the terms of the MIT/X11 license
4362
4363         * mini-ppc.c (mono_arch_output_basic_block):
4364         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4365         for bits 32-47 with signed load/store diplacements for bits
4366         48-63.  Use prefered base/offset order for indexed form.
4367         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4368         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4369         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4370         OP_LOADI2_MEMBASE): Same.
4371         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4372         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4373         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4374         indexed form.
4375         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4376         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4377         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4378         OP_LOADI1_MEMINDEX): Same
4379         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4380         OP_STORER8_MEMINDEX): Same
4381         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4382         computations.
4383         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4384         for bits 32-47 with signed load/store diplacements for bits
4385         48-63.  Use prefered base/offset order for indexed form.
4386
4387 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4388
4389 This patch is contributed under the terms of the MIT/X11 license
4390
4391         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4392         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4393         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4394         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4395         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4396         cfg->stack_usage to avoid size warnings.
4397         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4398         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4399         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4400         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4401         to convert.
4402         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4403         after code varible is initialized.
4404         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4405         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4406         (mono_arch_emit_epilog): 
4407         Move Use ppc_load32 for cfg->stack_usage to avoid size
4408         warnings.
4409
4410 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4411
4412         * method-to-ir.c: The write barrier doesn't do the store anymore,
4413         so we have always to emit it.  Also, emit the wbarrier after the
4414         store.
4415
4416 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4419         for argument count 3 too.
4420
4421 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4422
4423         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4424         the caller handle the exceptions.
4425         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4426         method. Fixes #524498.
4427
4428 2009-07-22  Geoff Norton  <gnorton@novell.com>
4429
4430         * mini-exceptions.c: Fix build on ia64.
4431
4432 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4433
4434         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4435         barriers.
4436
4437 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4438
4439         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4440         code.
4441
4442 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * basic-simd.cs (Main): Pass args to the test driver.
4445
4446 2009-07-20  Geoff Norton  <gnorton@novell.com>
4447
4448         * mini-x86.h: Fix the x86 version guards to use Apple's
4449         properly defined macros.
4450
4451 2009-07-20  Geoff Norton  <gnorton@novell.com>
4452
4453         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4454         aligned access.
4455
4456 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4457
4458         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4459         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4460         the information which is needed for invokes, so only one locking+hash table
4461         lookup is needed.
4462
4463         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4464         
4465         * aot-compiler.c (add_generic_instances): Emit instances of 
4466         GenericComparer<T> for primitive types.
4467
4468 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4469
4470         * mini-posix.c: Fix linux build.
4471
4472 2009-07-19  Geoff Norton  <gnorton@novell.com>
4473
4474         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4475         mono_gdb_render_native_backtraces
4476         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4477         so we implement the sane semantics to the runtime here
4478         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4479         so we need to call it differently (mono_gdb_render_native_backtraces)
4480         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4481         here for default implementations.
4482         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4483         support Apple's weird syscall (SYS_fork) implementation and not busy
4484         loop in abort() on native crashes on OSX anymore.
4485
4486 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4487
4488         * aot-runtime.c (load_method): Change the handling of the
4489         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4490         are used.
4491
4492         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4493
4494 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4495
4496         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4497         seems to break the aot tests.
4498         
4499         * mini.c (mono_patch_info_equal): Fix the handling of 
4500         MONO_PATCH_INFO_RGCTX_FETCH.
4501
4502 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4505
4506         * mini.c (mono_patch_info_hash): Fix the handling of 
4507         MONO_PATCH_INFO_INTERNAL_METHOD.
4508         (mono_patch_info_equal): Ditto.
4509
4510 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4511
4512         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4513         in a few places.
4514         
4515         * mini-llvm.c: Add some infrastructure for AOT support.
4516
4517 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4518
4519         * mini-llvm-cpp.c: Update to the latest llvm api.
4520         
4521         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4522         option to false to prevent llvm from installing signal handlers which
4523         trip up the gc.
4524         
4525 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4526
4527         * cpu-x86.md:
4528         * cpu-amd64.md: Revert previous change as those instructions
4529         take 2 separate arguments. Remember to read the arch docs more
4530         carefully next time.
4531
4532 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4533
4534         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4535
4536 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4537
4538         * mini-ppc.c: exploit multiple load/store units if available (rest of
4539         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4540         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4541
4542 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4543
4544         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4545         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4546
4547 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4548
4549         * cpu-x86.md: Fix missing clobbering from trancendental simd
4550         ops.
4551
4552         * cpu-amd64.md: Same.
4553
4554 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4555
4556         Contributed under the terms of the MIT/X11 license by
4557         Jerry Maine <crashfourit@gail.com>.
4558
4559         * basic-simd.cs: Added tests for single and doulble indexers.
4560
4561         * cpu-amd64.md: Added simd opcode information.
4562
4563         * mini-amd64.c: Added IR to native simd generation code.
4564         Added simd register names and function that returns them.
4565
4566         * mini-amd64.h: Added marcos to turn on simd code compilation in
4567         amd64. Added max simd register count marco. Added caller/callee
4568         register mask marcos. Added marcos to use simd register bank.
4569
4570         * mini.h: Added helper marco for shufling dwords and simple
4571         floats.
4572
4573 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4574
4575         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4576
4577         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4578
4579         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4580         the length of the native code as well.
4581
4582         * basic-simd.cs: Add a test for #521662.
4583
4584 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4585
4586         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4587
4588 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4589
4590         * mini.c: Register function for getting the IP from a signal
4591         context with metadata.
4592
4593 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4594
4595         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4596         call a generic class init trampoline if needed. Fixes #519336.
4597
4598         * generics.cs: Add a test.
4599         
4600 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4601
4602         * method-to-ir.c: When doing a call which might be remote from
4603         shared generic code to other shared code with open type arguments,
4604         get the remoting invoke wrapper from the RGCTX and do an indirect
4605         call to it.
4606
4607 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4608
4609         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4610         after the unbox trampoline in the full-aot case.
4611
4612 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4613         
4614         * mini.c: Move initialization of jit_mutex before debugger initialization
4615         
4616         to avoid crashes.
4617         
4618         
4619         * Info.plist: added Info.plist and link flag to enable the mono executable
4620         to access other processes. Requires codesigning of the executable to work.
4621         
4622         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4623         
4624         compile on OS X.
4625         
4626
4627 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4628
4629         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4630
4631 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4632
4633         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4634         when the generic instance is an instantiation of a subclass of the
4635         methods class. Fixes #517166.
4636
4637 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4638
4639         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4640         code.
4641
4642         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4643         AOTed code.
4644
4645         * CMakeLists.txt: Add minimal support for installation.
4646
4647 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4648
4649         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4650         determine whenever a method is directly callable to a separate function.
4651
4652         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4653         needed ones as a result of the previous change.
4654
4655         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4656         type of register arrays.
4657
4658         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4659         type of register arrays.
4660
4661 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4662         
4663         Contributed under the terms of the MIT/X11 license by
4664         Jerry Maine <crashfourit@gail.com>.
4665
4666         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4667
4668 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4669
4670         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4671
4672 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4673
4674         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4675         dump of structure return value. Fix some formatting.
4676         * cpu-s390x.md: Fix lengths of instruction sequences.
4677         * mini-s390.c: Minor formatting changes.
4678
4679 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4680
4681         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4682         Use sigaction on freebsd as well.
4683
4684 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4685
4686         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4687         uses #ifdef on it.
4688         
4689         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4690
4691 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4692
4693         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4694
4695 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4696
4697         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4698
4699 2009-06-20  Martin Baulig  <martin@ximian.com>
4700
4701         * debug-mini.c
4702         (MonoDebuggerThreadFlags): New enum typedef.
4703         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4704         (mono_debugger_thread_created): Added `gpointer func' argument;
4705         initialize the new `thread_flags' field.
4706
4707 2009-06-18  Martin Baulig  <martin@ximian.com>
4708
4709         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4710         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4711
4712         * debug-debugger.c
4713         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4714         flag in `MONO_DEBUGGER__info.runtime_info'.
4715
4716         * driver.c
4717         (mono_main): Call mini_debugger_set_attach_ok() if generics
4718         sharing is disabled.
4719
4720 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4721
4722         * aot-compiler.c (add_wrappers): Fix a warning.
4723
4724         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4725         the ppc load/store macro changes.
4726
4727 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4730
4731         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4732         not just the got symbol.
4733
4734         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4735         on ppc.
4736
4737         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4738         ppc.
4739         
4740         * aot-compiler.c: Remove some fixmes.
4741
4742         * driver.c (mono_main): Print a helpful message when cross-compiling.
4743
4744         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4745
4746         * method-to-ir.c (initialize_array_data): Do the optimization if the
4747         target byte order is little endian, instead of the host byte order.
4748
4749         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4750         wrappers into the mscorlib image, Emit a unique plt symbol for each
4751         image, emit symbols for plt entries.
4752
4753         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4754         a .size directive.
4755         
4756 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * aot-compiler.c (add_wrappers): Avoid calling 
4759         mono_marshal_get_type_info () since it can assert for some types.
4760
4761         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4762         ldtoken are used inside wrappers.
4763
4764         * helpers.c: Add support for prefixing tools with the arch name.
4765
4766         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4767         quantities when using ilp32.
4768
4769         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4770         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4771
4772         * image-writer.c: Use .long on ilp32.
4773
4774         * aot-compiler.c: Use 32 bit loads on ilp32.
4775         
4776 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4779
4780         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4781
4782         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4783
4784         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4785         second got slot of every aot image.
4786         
4787         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4788         aot on platforms with function pointers.
4789
4790         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4791         support for aot/full aot on ppc/ppc64.
4792         
4793         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4794         arguments which are needed on ppc.
4795
4796         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4797         argument.
4798
4799         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4800         
4801         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4802
4803         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4804
4805         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4806
4807         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4808
4809 2009-06-17  Geoff Norton  <gnorton@novell.com>
4810
4811         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4812
4813 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4814
4815         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4816         to control whenever the dwarf writer is in xdebug or aot mode.
4817         (emit_class_dwarf_info): Use a separate abbrev for structures without
4818         children.
4819
4820         * aot-compiler.c: Pass the appending parameter to 
4821         mono_dwarf_writer_create ().
4822
4823         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4824         falls through to its next bblock. Fixes #513931.
4825
4826         * iltests.il: Add a test.
4827
4828         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4829         infor even if emit_line is FALSE, as the apple linker seems to require it.
4830
4831         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4832
4833         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4834         gcc does.
4835         (emit_fde): Ditto.
4836
4837 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4838
4839         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4840         mips build.
4841
4842 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4843
4844         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4845         'has_call_handler' fields.
4846
4847         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4848
4849         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4850         first bblock if not needed. Fixes #512790.
4851         
4852 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4853
4854         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4855         
4856         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4857         wrappers.
4858
4859         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4860         remoting-invoke-with-check wrappers, which are not needed when running with
4861         full-aot, since it doesn't support remoting.
4862         
4863 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4864
4865         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4866
4867         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4868         method info, it is not used anymore.
4869
4870         * mini.h: Bump AOT file format version.
4871         
4872         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4873         word smaller.
4874
4875         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4876         change above.
4877         
4878         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4879
4880         * mini.h: Bump AOT file format version.
4881         
4882 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4883
4884         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4885         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4886         iphone.
4887
4888         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4889         of CKFINITE and FBGE for VFP.
4890
4891 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4892
4893         * aot-compiler.c: Don't align code to 16 bytes on arm.
4894         
4895         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4896         before the methods they belong to.
4897
4898         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4899         the full-aot case if possible, since the trampoline will be called right 
4900         away.
4901
4902         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4903         trampolines to 1024 after the change above.
4904
4905         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4906         trampoline to save 8 bytes per trampoline.
4907
4908         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4909         change above.
4910
4911 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4912
4913         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4914
4915 2009-06-08  Martin Baulig  <martin@ximian.com>
4916
4917         * debug-mini.c
4918         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4919         (_mono_debugger_throw_exception): Don't make this static.
4920         (_mono_debugger_unhandled_exception): Likewise.
4921         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4922
4923         * debug-mini.c
4924         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4925         (_mono_debugger_throw_exception): Add function prototype.
4926         (_mono_debugger_unhandled_exception): Likewise.
4927
4928         * mini-exceptions.c
4929         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4930         arg; return the first exception handler if the exception is caught
4931         and we're running inside the debugger.
4932         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4933         improve exception handle inside runtime-invoke, check whether the
4934         exception is actually caught in the method being invoked and not
4935         by the runtime-invoke-wrapper.
4936
4937 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4938
4939         * image-writer.c: Improve support for the osx assembler.
4940
4941         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4942         support them.
4943
4944 2009-06-08  Martin Baulig  <martin@ximian.com>
4945
4946         * debug-mini.c
4947         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4948         (_mono_debugger_throw_exception): Don't make this static.
4949         (_mono_debugger_unhandled_exception): Likewise.
4950         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4951
4952         * debug-mini.c
4953         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4954         (_mono_debugger_throw_exception): Add function prototype.
4955         (_mono_debugger_unhandled_exception): Likewise.
4956
4957         * mini-exceptions.c
4958         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4959         arg; return the first exception handler if the exception is caught
4960         and we're running inside the debugger.
4961         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4962         improve exception handle inside runtime-invoke, check whether the
4963         exception is actually caught in the method being invoked and not
4964         by the runtime-invoke-wrapper.
4965
4966 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * image-writer.c (append_subsection): Don't align subsections of the
4969         debug_line section as a workaround.
4970
4971         * dwarfwriter.c: Emit line number info in the AOT case as well.
4972
4973 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4974
4975         This patch is contributed under the terms of the MIT/X11 license
4976
4977        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4978        code_len <= code_size
4979
4980 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4981
4982         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4983
4984 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4985
4986         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4987         invoke wrappers, we now use trampolines instead.
4988
4989 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4990
4991         * mini-darwin.c: The exception thread must not be registered with
4992         the GC.
4993
4994 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4995
4996         * mini-gc.c: Disable the code because it makes SGen crash.
4997
4998 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4999
5000         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5001         instead of asserting.
5002
5003 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5004
5005         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5006         output file after the code has been compiled.
5007
5008 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5009
5010         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5011
5012 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5013
5014         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5015         entries distinction to simplify the code.
5016
5017         * mini.h: Bump AOT file format version.
5018         
5019 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5020
5021         * objects.cs: Fix the signature of one of the tests.
5022
5023         * mini.c (mini_create_ftnptr): New helper function, moved here from
5024         object.c.
5025         (mini_get_addr_from_ftnptr): Ditto.
5026         (mini_init): Install the new helpers.
5027
5028 2009-05-28  Martin Baulig  <martin@ximian.com>
5029
5030         Correctly initialize the debugger when embedding Mono.
5031
5032         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5033         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5034         see documentation in mini_debug_running_inside_mdb().
5035
5036         * debug-debugger.c
5037         (mini_debug_running_inside_mdb): New function to check whether
5038         we're running inside mdb.
5039
5040         * mini.c (mini_init): Call mini_debugger_init() if we're running
5041         inside the debugger.
5042
5043         * driver.c (mono_main): Moved the call to mini_debugger_init()
5044         into mini_init() to make this work when embedding Mono.
5045
5046         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5047         calls to mini_debugger_init().
5048
5049         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5050         mono_debugger_main() -> mini_debugger_main() and put them inside a
5051         `MONO_DEBUGGER_SUPPORTED' conditional.
5052
5053 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5054
5055         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5056         this is no longer in use.
5057         * mini.h: Same.
5058
5059 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5060
5061         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5062
5063         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5064         methods.
5065
5066 2009-05-27  Martin Baulig  <martin@ximian.com>
5067
5068 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5069
5070         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5071         long_conv_to_r_un to 64 bits.
5072
5073         * cpu-x86.md: Increase the instruction size due to the changes.
5074
5075         * iltests.il.in: Add regression test.
5076
5077         Fixes #467201.
5078
5079 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5080
5081         * objects.cs: Move the previous test from basic.cs to here.
5082
5083 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5084
5085         * basic.cs: Add regression test for #506915.
5086
5087 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5088
5089         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5090         optimization we must check the bb of the first byte of stobj as
5091         it's the only one set in cil_offset_to_bb.
5092
5093         Fixes #506915.  
5094
5095 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5096
5097         * image-writer.c: Fix pointer directive on ppc64.
5098
5099 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5100
5101         * image-writer.c (asm_writer_emit_section_change): Avoid using
5102         .bss subsections on ppc too.
5103
5104 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5105
5106         * image-writer.c: Fix the definition of TARGET_ASM_....
5107         
5108         * image-writer.c: Fix the emission of assembler directives in the last
5109         change.
5110
5111         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5112         exception throwing code to accomodate ppc64.
5113
5114         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5115         size to work on ppc64 too.
5116
5117         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5118         too.
5119
5120         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5121         the assembler dialect instead of using platform specific defines.
5122
5123 2009-05-22  Geoff Norton  <gnorton@novell.com>
5124
5125         * mini-arm.c (get_call_info): If a structure is split between the stack
5126         and argument registers, we should not advance the stack pointer by the entire
5127         native size, but just by the amount that spilled.
5128
5129 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5130
5131         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5132         correctly.
5133
5134 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5135
5136         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5137         wrappers normally.
5138         
5139         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5140         methods so wrapper don't get added twice.
5141         (add_generic_instances): Don't add methods of arrays.
5142
5143         * generics.cs: Mark one test as !FULLAOT.
5144
5145 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5146
5147         * mini-x86.c (emit_move_return_value): Remove unused vars.
5148
5149 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5150
5151         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5152         decomposing 8 bytes structs into a LCALL.
5153
5154         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5155         pointer for where to store the returned regs.
5156
5157         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5158         state the concern.
5159
5160         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5161
5162 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5163
5164         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5165         without getenv.
5166
5167 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5168
5169         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5170
5171         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5172         generics.
5173
5174 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5175
5176         * local-propagation.c (mono_local_cprop): Avoid local propagation
5177         across paired add/sub if the first instruction dest reg is it's
5178         source reg. For example:
5179
5180         int_add_imm R12 <- R12 [1] clobbers: 1
5181         int_sub_imm R42 <- R12 [1] clobbers: 1
5182
5183         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5184         maintain the math identify.
5185
5186         Fixes #505375.
5187
5188 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5189
5190         * Makefile.am: avoid going on the network just to get the revision,
5191         use git log instead
5192
5193 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5194
5195         Fixed estimate for short branches on amd64 (they were off mark, and
5196         enabling call prolog-epilog instrumentations caused assertions).
5197         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5198         estimate for the maximum length of this basic block.
5199         * mini-amd64.c:
5200         - mono_arch_emit_prolog: compute max_length for each basic block
5201           (instead of max_offset), and inflate size estimate also for entry bb
5202           in case of code instrumentation.
5203         - mono_arch_output_basic_block: get rid of "cpos" (the current
5204           estimated "position" in the code), and always use "offset" instead,
5205           which is accurate; at the beginning of the function quickly recompute
5206           max_offset for all the remaining blocks, starting from the current
5207           cfg->code_len (which is correct, and not estimated) and using the
5208           estimated block lengths computed previously.
5209
5210 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5211
5212         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5213         functions, it is already done in the caller.
5214
5215         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5216
5217         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5218         MONO_ARCH_GSHARED_SUPPORTED define.
5219
5220         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5221
5222         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5223         function.
5224
5225 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5226
5227         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5228         call to mono_marshal_get_rgctx_invoke ().
5229
5230         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5231         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5232         gshared use the static rgctx trampolines now.
5233         
5234         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5235         platform supports it.
5236
5237 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5238
5239         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5240
5241         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5242
5243 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5244
5245         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5246
5247         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5248         for ppc.
5249
5250 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5251
5252         Made it possible for mono_arch_instrument_epilog to preserve
5253         argument registers, otherwise instrumenting the "epilogue" before
5254         a tail call would clobber them.
5255         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5256         if like mono_arch_instrument_epilog but with an additional parameter
5257         that states if argument registers must be preserved.
5258         * mini.c: implemented mono_arch_instrument_epilog as a call to
5259         mono_arch_instrument_epilog_full without asking to preserve argument
5260         registers (this makes the existing code work as usual).
5261         * mini-amd64.c:
5262         - mono_arch_instrument_epilog: add parameter to transform it into
5263         mono_arch_instrument_epilog_full, and preserve argument registers
5264         when required.
5265         - mono_arch_output_basic_block, OP_TAILCALL case: call
5266         mono_arch_instrument_epilog_full.
5267         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5268         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5269         only transformed mono_arch_instrument_epilog into
5270         mono_arch_instrument_epilog_full.
5271
5272 2009-05-15  Geoff Norton  <gnorton@novell.com>
5273
5274         * mini-darwin.c: This works on arm now.
5275
5276 2009-05-14  Geoff Norton  <gnorton@novell.com>
5277
5278         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5279         embedding api.
5280
5281 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5282
5283         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5284         label names.
5285
5286         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5287         wrappers during full aot mode correctly.
5288
5289         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5290         methods correctly.
5291
5292         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5293         mono_metadata_type_hash ().
5294
5295 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5296
5297         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5298         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5299         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5300         Removed MONO_INST_BRLABEL from the instruction flags, and the
5301         remaining code that used it, because we do not support branches inside
5302         basic blocks (and branch target labels) anymore.
5303         * Makefile.am: As part of the above cleanup, remove reference to
5304         BURG files which don't exist anymore.
5305
5306 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5307
5308         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5309         osx.
5310
5311         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5312         to use mono_arch_throw_corlib_exception.
5313
5314         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5315         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5316
5317         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5318         domain mempool.
5319
5320         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5321
5322         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5323         for the got to make debugging easier and to avoid confusing it with the
5324         system got.
5325         
5326         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5327         method so a breakpoint can be set when using gdb.
5328
5329 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5330
5331         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5332         on mono_method_get_imt_slot ().
5333
5334         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5335         num_decodes variables.
5336
5337         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5338         change as it doesn't seem to work.
5339         
5340         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5341         wrappers.
5342
5343 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5344
5345         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5346         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5347
5348         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5349         builder when using full aot.
5350
5351         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5352         here, it is already handled.
5353         
5354         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5355         correctly for IMT.
5356
5357         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5358
5359         * mini-arm.h: Enable IMT for full aot.
5360         
5361         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5362         arch doesn't support it.
5363
5364         * mini.c (mini_init): Don't disable IMT for full aot if the
5365         architecture supports it.
5366
5367         * mini.h (MonoAotTrampoline): New enum containing the different types
5368         of 'numerous' trampolines.
5369         (MONO_AOT_FILE_VERSION): Bump this.
5370
5371         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5372         static rgctx trampolines. Add support for full-aot IMT thunks.
5373
5374         * mini-amd64.h: Enable IMT for full aot.
5375
5376         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5377         to exclude tests belonging to a category.
5378
5379         * generics.cs: Mark some tests with a !FULLAOT category.
5380
5381         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5382         generics tests.
5383
5384 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5385
5386         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5387         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5388         (emit_plt): Fix a warning.
5389
5390 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5391
5392         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5393         back into aot-compiler.c to a place where the other functions shared by
5394         the runtime and aot compiler are.
5395         
5396         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5397         as done previously, instead of in MonoAotFileInfo, since pointers might have
5398         alignment requirements.
5399
5400         * mini.h: Bump AOT file format version.
5401
5402 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5403
5404         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5405         that is used at runtime from the aot-compiler.c, this makes it
5406         work on setups that remove the AOT compiler from the output
5407         image. 
5408
5409 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5410
5411         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5412         PPC.
5413
5414         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5415
5416         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5417
5418         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5419         stuff to mono_arch_decompose_long_opts ().
5420         (mono_decompose_opcode): Remove some dead code.
5421
5422 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5423
5424         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5425         cmethod can be null for quite a some reasons.
5426
5427 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5428
5429         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5430
5431 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5432
5433         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5434
5435 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5436
5437         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5438         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5439         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5440         calls returning structures by addr on amd64.
5441
5442         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5443
5444         * iltests.il.in: Restructure the tail call tests a bit.
5445         
5446 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5447
5448         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5449         for virtual methods too.
5450
5451 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5452
5453         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5454         due to regression in verifying System.dll.
5455
5456 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5459         in dynamic methods.
5460
5461         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5462         instances.
5463
5464         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5465         g_str_hash () which can change.
5466
5467         * driver.c (mini_regression): Disable optimizations not supported by
5468         the cpu. Fixes #500019.
5469
5470         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5471         build.
5472
5473 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5474
5475         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5476         to the latest LLVM code.
5477
5478 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5479
5480         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5481
5482 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5483
5484         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5485         x86/amd64.
5486
5487         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5488         no longer saving offsets, so just save the patch types along with the other
5489         info.
5490         * aot-runtime.c (load_patch_info): Update after the changes to 
5491         encode_patch_list ().
5492         (decode_got_entry): Removed, merged into load_patch_info ().
5493         (is_shared_got_patch): Removed, call the same function from
5494         aot-compiler.c.
5495
5496         * mini.h: Bump aot file format version.
5497         
5498         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5499         half-finished no-dlsym code.
5500
5501         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5502         option.
5503
5504         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5505         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5506
5507 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5508
5509         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5510         buffer length to work with AOT code.
5511
5512         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5513         ldfld/stfld opcodes.
5514
5515         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5516         as it is not used.
5517
5518         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5519
5520         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5521
5522         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5523         LLVM API.
5524
5525         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5526         if needed. Don't decompose long operations when using llvm.
5527
5528 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5531         PAGESIZE constant.
5532
5533         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5534
5535 2009-05-03  Martin Baulig  <martin@ximian.com>
5536
5537         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5538         mono_debugger_insert_method_breakpoint() since the class init
5539         handler we're inserting at the top of the method already gives us
5540         a notification.
5541
5542 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5543
5544         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5545         to mono_arch_decompose_long_opts () for x86 and arm.
5546
5547 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5548
5549         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5550         TARGET_AMD64 here.
5551
5552 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5553
5554         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5555         JIT code.
5556
5557 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5558
5559         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5560         number of trampolines used in full-aot mode.
5561
5562         * aot-compiler.c: Add an ntrampolines option to set the number of 
5563         trampolines emitted in full-aot mode.
5564
5565 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5566
5567         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5568         a volatile load. Get rid of get_tempname (), llvm assigns names
5569         automatically.
5570
5571         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5572         builder function.
5573
5574         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5575         a value.
5576
5577         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5578         level 1.
5579
5580         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5581         to the same register as a fixed sreg2. Fixes #497271.
5582
5583         * iltests.il.in: Add a new test.
5584
5585 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5588         stack, since pushes complicate exception handling.
5589
5590         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5591         the stack if they are passed using moves.
5592
5593         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5594
5595         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5596         when using llvm.
5597
5598         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5599         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5600         of FMOVE if it is an R4.
5601
5602 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5603
5604         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5605
5606         * mini.h (LLVMCallInfo): New structure to store calling convention 
5607         information for the LLVM back end similar to the CallInfo structures in 
5608         the back-ends.
5609
5610         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5611         call information in a format usable by LLVM.
5612         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5613
5614         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5615         mono_llvm_emit_call () when compiling using LLVM.
5616
5617         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5618         comments to all functions. Fix memory leaks. Add a public init/cleanup
5619         function.
5620
5621         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5622
5623         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5624         mono_array_new_va () jit icall.
5625         
5626 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5627
5628         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5629         multiple machine description files to be specified.
5630         * mini-ops.h: fixes for cross-compilation.
5631
5632 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5633
5634         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5635         some porting work.
5636
5637 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5638
5639         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5640         to prevent asserts in various passes. Fixes #497220.
5641
5642 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5643
5644         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5645         a racy assert.
5646
5647         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5648         table to avoid duplicates.
5649
5650         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5651         
5652         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5653         option is used.
5654
5655 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5656
5657         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5658         is for method or field access.
5659
5660 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5663         a Value to stdout.
5664
5665         * mini-llvm.c (mono_llvm_emit_method): Use it.
5666         
5667         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5668         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5669         on volatile values.
5670
5671         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5672         synchronized methods.
5673
5674         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5675
5676         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5677
5678         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5679         OP_LOADI8_MEM.
5680
5681         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5682         allowing some options to be set dynamically.
5683
5684 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5687         unconditional branch.
5688
5689         * mini.h (MonoTrampolineType): Add new trampoline type 
5690         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5691         compiled code.
5692
5693         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5694         function.
5695
5696         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5697         creation function.
5698
5699         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5700         is enabled. Instead, use the llvm vcall trampoline.
5701         
5702         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5703
5704         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5705         
5706         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5707         functions.
5708
5709         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5710         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5711
5712         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5713         OP_IA64_CSET opcode.
5714
5715         * mini.c: Fix a warning.
5716
5717         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5718         THROW to the appropriate llvm type.
5719
5720 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5721
5722         * mini.c (mini_method_compile): Add statistics for methods JITted
5723         with/without LLVM.
5724
5725 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5726
5727         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5728         OP_IA64_CMP_<cond>_IMM opcodes.
5729
5730 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5733         corlib exceptions.
5734
5735         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5736         correctly.
5737
5738         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5739         GENERICINST.
5740
5741 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5742
5743         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5744
5745 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5748         support.
5749
5750         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5751         rgctx invoke trampolines for x86.
5752
5753         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5754         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5755         (mono_arch_get_vcall_slot): Simplify this.
5756
5757 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5758
5759         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5760         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5761
5762 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5763
5764         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5765         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5766
5767         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5768
5769         * liveness.c (visit_bb): Remove a needless assert.
5770
5771 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5774         full aot support to the arch specific code.
5775
5776         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5777
5778         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5779
5780         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5781         
5782         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5783         collect information about the delegate invoke impl trampolines.
5784
5785         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5786         to save trampolines during full-aot mode.
5787
5788         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5789         creation function which returns a trampoline which sets the rgctx
5790         argument.
5791         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5792         wrapper if possible.
5793         (mono_delegate_trampoline): Ditto.
5794
5795         * mini.c (mono_jit_runtime_invoke): Ditto.
5796
5797         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5798         
5799         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5800
5801         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5802         
5803 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5804
5805         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5806         just setting the opcode to OP_NOP.
5807
5808 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * mini.c (mini_method_compile): Put the last change inside an 
5811         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5812         
5813         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5814         and extend live ranges to cover the whole method when using xdb.
5815
5816         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5817         do it in the trampolines.
5818
5819         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5820         needed.
5821
5822         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5823         
5824         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5825         call code in full-aot mode since IMT is disabled there.
5826         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5827         new JIT no longer has that restriction.
5828
5829         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5830
5831         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5832         a more compact format.
5833         (mono_aot_wrapper_name): New function to return a unique name for a
5834         wrapper method, also used by the AOT runtime.
5835
5836         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5837         aot-compiler.c.
5838
5839         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5840         when a ICollection<T> etc is encountered.
5841         (add_generic_instances): Process method arguments/locals too.
5842         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5843         trampoline names.
5844
5845         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5846         
5847 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5848
5849         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5850
5851         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5852
5853         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5854         representing the result of the decomposition. Nullify instructions
5855         instead of setting them to OP_NOP since nops can't have registers
5856         set.
5857
5858 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5861         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5862         info. Strip 'mapping symbols' on ARM.
5863
5864         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5865         
5866         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5867         this with the native genmdesc.
5868
5869 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5870
5871         * aot-runtime.c:  Fixing the MSVC build.
5872
5873         Code is contributed under MIT/X11 license.
5874
5875 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5876
5877         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5878         JITted code depends on it.
5879
5880 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5881
5882         * aot-compiler.c: Use new MonoGenericParam accessors.
5883
5884 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5885
5886         Reduce memory usage and improve correctness wrt MonoGenericParam
5887         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5888         handing.  Avoid allocating MonoGenericParams, but use the ones in
5889         the container itself.
5890
5891 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5892
5893         * tasklets.c: Return exceptions in the out argument.
5894
5895 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5896
5897         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5898         opcode. Use pointer types in more places instead of casting them to 
5899         integers.
5900
5901         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5902         optimizations.
5903         (mono_llvm_optimize_method): New helper function to optimize a method.
5904
5905         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5906         widening code so it could be called from more places.
5907         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5908         code paths in the call opcodes.
5909
5910 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5911
5912         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5913
5914 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5915
5916         * dwarfwriter.c: Use _ to separate class name 
5917         components as gdb can't handle '.'. Represent reference variables
5918         as 'class <NAME>&'.
5919         
5920         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5921
5922         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5923         
5924         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5925
5926         * gc-test.cs: New file with GC stack marking tests.
5927         
5928         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5929         negative numbers for vfp.
5930
5931         * basic-float.cs: Add a test.
5932         
5933 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5934
5935         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5936
5937 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5938
5939         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5940         part of tasklet/continuation support.
5941
5942 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5943
5944         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5945         amd64 opcodes inside an ifdef.
5946
5947         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5948         of complex types.
5949         
5950         * dwarfwriter.c (emit_type): Emit the class info for classes.
5951
5952 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5953
5954         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5955
5956         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5957
5958         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5959
5960         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5961
5962 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5965
5966         * mini-llvm.c: Update comments.
5967
5968         * mini.h (COMPILE_LLVM): New macro.
5969
5970         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5971
5972         * ssa.c (mono_ssa_compute): Ditto.
5973         
5974         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5975         the unwind ops from a DWARF FDE.
5976
5977         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5978         methods by extracting the dwarf unwind ops from the unwind info generated
5979         by LLVM.
5980         
5981         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5982         calls.
5983
5984         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5985         addressing modes.
5986
5987 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5988
5989         * Makefile.am (llvm_sources): Enable this.
5990
5991         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5992         failing back to the JIT if something cannot be handled.
5993
5994         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5995         compiling with LLVM.
5996
5997         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5998         compiling with LLVM.
5999
6000         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6001         compiling with LLVM.
6002
6003         * mini-ops.h: Add a few opcodes needed by LLVM.
6004
6005         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6006         has no unwind info.
6007
6008         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6009         backend.
6010
6011         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6012
6013         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6014
6015 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6016
6017         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6018         ridiculously large methods.
6019
6020 2009-03-31  Martin Baulig  <martin@ximian.com>
6021
6022         * debug-debugger.c (debugger_remove_breakpoint): Call
6023         mono_debugger_remove_class_init_callback ().
6024
6025 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6026
6027         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6028         right before emitting code, not at the start.
6029
6030         * mini.c (mono_postprocess_patches): Extract this into a separate function
6031         from mono_codegen ().
6032
6033         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6034         byref types correctly.
6035
6036 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6037
6038         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6039         by the last change.
6040
6041 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6044         indirect calls, this avoids problems where get_vcall_slot () would get
6045         confused by the native code for the instruction preceeding the call.
6046         (mono_arch_get_vcall_slot): Simplify this.
6047         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6048
6049         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6050         register allocator now seems to depend on them instead of the data in
6051         cpu-<ARCH>.md.
6052
6053         * mini.c (mini_method_compile): Throw the correct type of exception if
6054         mono_method_get_header () fails because of a loading error.
6055
6056 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6057
6058         * mini.c (mini_method_compile): Clear the loader error if the method
6059         header cannot be decoded.
6060
6061         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6062         interface methods on proxies correctly.
6063
6064         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6065         this argument for vtype methods. Add precise liveness info for arguments.
6066
6067         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6068         LIVERANGE_START/END opcodes.
6069
6070         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6071         for arguments and values in registers.
6072
6073 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6074
6075         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6076         return a valuetype. Fixes #487518.
6077
6078         * iltests.il: Add a test.
6079         
6080         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6081
6082         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6083         closed over a null reference correctly.
6084
6085 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6086
6087         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6088
6089 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6090
6091         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6092         allocated to the same registers as fixed sregs.
6093
6094 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6095
6096         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6097         ATOMIC_CAS_IMM ops.
6098
6099         * method-to-ir.c: Handle more cases for
6100         Interlocked.CompareExchange.
6101
6102         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6103         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6104         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6105
6106 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6107
6108         * aot-runtime.c (decode_method_ref): Fix a warning.
6109
6110         * unwind.c (mono_unwind_frame): Ditto.  
6111
6112 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6113
6114         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6115         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6116
6117         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6118         fix the handling of large values in the ALU_PC_G0_NC relocation.
6119
6120 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6121
6122         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6123
6124 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6125
6126         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6127         ops.
6128
6129 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6130
6131         * method-to-ir.c: MINI_OP3 needs a comma.
6132
6133         * method-to-ir.c, mini.h, mini.c: Remove
6134         mono_init_op_sreg_counts ().
6135
6136 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6139         OP_JMP.
6140         
6141         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6142         assertion.
6143
6144         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6145
6146         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6147         code somewhat.
6148
6149 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6150
6151         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6152         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6153         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6154         operations.
6155
6156 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6157
6158         * driver.c: Change location of gc_wrapper.h.
6159
6160         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6161         inside finally clauses correctly. Fixes #485721.
6162
6163         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6164         after the change above.
6165
6166         * exceptions.cs: Add a test.
6167         
6168 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6169
6170         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6171
6172         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6173         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6174         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6175
6176         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6177         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6178
6179 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6180
6181         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6182         Simplify logic for ensure_method_is_allowed_to_call_method. 
6183         Handle wrappers on callers.
6184
6185 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6186
6187         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6188         them don't run yet.
6189
6190         * basic-simd.cs: Fix the names of some test methods.
6191
6192 2009-03-18  Geoff Norton  <gnorton@novell.com>
6193
6194         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6195
6196 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6197
6198         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6199
6200 2009-03-17  Jb Evain  <jbevain@novell.com>
6201
6202         * driver.c: remove now uneeded call to mono_gc_base_init before
6203         mono_profiler_load.
6204
6205 2009-03-17  Jb Evain  <jbevain@novell.com>
6206
6207         * dwarfwriter.c (token_handler): handle more cases.
6208
6209 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6210
6211         * method-to-ir.c: Remove more dead code (that was required only
6212         because of method_is_safe). Fix compiler warnings.
6213
6214 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6215
6216         * method-to-ir.c: Remove unneeded/useless method_is_safe
6217         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6218
6219 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6220
6221         * mini.c (mini_method_compile): Print the method been compiled with
6222         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6223         for people not familiar with the runtime.
6224
6225 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6226
6227         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6228         a managed object which is later put into a GList. Return its class instead.
6229
6230         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6231         stack slots when using sgen.
6232
6233 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6234
6235         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6236
6237 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6238
6239         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6240         > so it works on the first vreg as well.
6241
6242 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6245         trigger randomly.
6246
6247         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6248         
6249         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6250         implement GArray.
6251
6252 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6253
6254         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6255         native->IL offset mapping.
6256
6257 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6258
6259         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6260
6261         * basic.cs: Add a test.
6262
6263 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6264
6265         * mini-x86.c (mono_arch_output_basic_block): Use different
6266         registers in case the ones we want to overwrite are used by the
6267         other operand.  Fixes regression in #480807.
6268
6269 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6270
6271         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6272
6273         * dwarfwriter.c (emit_line_number_info): The line number info for
6274         IL code was off by one. Fix that.
6275
6276         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6277         stack.
6278
6279 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6280
6281         Contributed under the terms of the MIT/X11 license by Steven
6282         Munroe <munroesj@us.ibm.com>.
6283
6284         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6285         Fixes #483462.
6286
6287 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6288
6289         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6290         as well.
6291
6292 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6293
6294         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6295         the delegate ctor handling code. Fixes #482638.
6296         
6297         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6298         #481458.
6299
6300         * iltests.il.in: Add a test.
6301         
6302         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6303         mini-posix.c.
6304
6305 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6306
6307         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6308         is shared generic code, return the trampoline, even if the method
6309         has already been compiled.  Fixes #479763.
6310
6311         * mini.c, mini.h: New function
6312         mono_jit_find_compiled_method_with_jit_info() which is the same as
6313         mono_jit_find_compiled_method() but also returns the jit info.
6314
6315 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6316
6317         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6318         for methods which actually have one.  For all other methods, make
6319         sure the this argument var is live the whole method.
6320
6321         * mini.c (mini_method_compile): Every shared method has a
6322         this/vtable/mrgctx info.  Fixes #480807.
6323
6324 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6325
6326         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6327         generic/imt thunks where some entries branch through the vtable,
6328         while other entries branch directly.
6329
6330 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6331
6332         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6333
6334         * mini-windows.c: Ditto.
6335         
6336         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6337         ctors.
6338
6339 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6340
6341         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6342         down an assert.
6343
6344 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6345
6346         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6347         #481403.
6348
6349 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6350
6351         * exceptions-x86.c: Include debug-mini.h - fixes build.
6352
6353 2009-03-04  Martin Baulig  <martin@ximian.com>
6354
6355         * debug-mini.c: Clean up the exception API and add documentation.
6356         (mono_debugger_handle_exception): New public method; this is
6357         called when throwing an exception or encountering an unhandled one.
6358         (mono_debugger_call_exception_handler): Formerly known as
6359         mono_debugger_handle_exception(); this is used to tell the
6360         debugger that we're about to invoke an exception handler.
6361
6362 2009-03-04  Martin Baulig  <martin@ximian.com>
6363
6364         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6365         ../metadata/mono-debug-debugger.c; save and reset exception state.
6366
6367 2009-03-02  Martin Baulig  <martin@ximian.com>
6368
6369         * debug-mini.c: Moved the debugger exception handling here from
6370         ../metadata/mono-debug-debugger.c.
6371
6372         * debug-mini.h
6373         (MonoDebuggerExceptionAction): New exception typedef.
6374
6375         * debug-mini.c
6376         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6377
6378         * exceptions-amd64.c
6379         (mono_amd64_throw_exception): Use the new debugger exception
6380         handling code.
6381
6382         * mini-exceptions.c
6383         (mono_handle_exception_internal): Don't call
6384         mono_debugger_unhandled_exception() here.
6385
6386 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6387
6388         * mini.c aot-compiler.c: Update after the changes to 
6389         mono_marshal_get_runtime_invoke ().
6390
6391         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6392         Virtual generic methods might not have method->slot set, work around
6393         that.
6394
6395         * generics.cs: Add a test.
6396
6397 2009-03-02  Geoff Norton  <gnorton@novell.com>
6398
6399         * mini.c:
6400         * driver.c: Allow signal chaining of SIGFPE as well.
6401
6402 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6403
6404         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6405         this since it now receives the method not its generic context in the
6406         IMT reg.
6407
6408         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6409         generic/imt thunks where some entries branch through the vtable, while
6410         other entries branch directly.
6411
6412         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6413
6414         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6415         support for interface methods as well.
6416
6417         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6418         using the normal IMT thunks.
6419
6420         generics.cs: Add new tests.
6421         
6422         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6423         the generic inst to the generic imt thunks. This fixes AOT support, 
6424         improves consistency with the normal IMT thunks, and makes it easier to
6425         add support for interface generic virtual methods later.
6426
6427         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6428         
6429 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6430
6431         * driver.c (mono_set_signal_chaining): New public API function to enable
6432         signal chaining on POSIX platforms.
6433
6434         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6435         (si@lindenlab.com) to implement signal chaining. The original patch was
6436         contributed under the MIT X/11 license:
6437         https://bugzilla.novell.com/show_bug.cgi?id=318894
6438
6439 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6440
6441         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6442         too until it can be made to run on amd64.
6443
6444 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6445
6446         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6447         to  get_generic_context_from_code () + get_call_info () if possible.
6448
6449 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6450
6451         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6452         suspend-on-sigsegv functionality.
6453
6454         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6455         to suspend when a native SIGSEGV is received. This is useful for debugging
6456         crashes which don't happen under gdb, since a live process contains more
6457         information than a core file.
6458
6459         * mini-exceptions.c (mono_print_thread_dump): Use 
6460         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6461
6462         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6463
6464         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6465         
6466         * basic-float.cs: Disable the tests which currently fail on amd64.
6467
6468         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6469         value to mono_arch_patch_callsite () to fix crashes.
6470         
6471         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6472
6473 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6474
6475         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6476         nop code by patching the call address to point to the nullified class init
6477         trampoline, as the former does not seem to be safe on SMP machines.
6478
6479 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6480
6481         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6482         they were wrong.
6483
6484 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * basic-float.cs basic-calls.cs: Fix warnings.
6487
6488 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6489
6490         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6491         correct frame pointer in the LMF.  Should fix #478394.
6492
6493 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6494
6495         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6496
6497         * image-writer.c: Make the binary writer less verbose.
6498
6499 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6500
6501         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6502         are called from runtime invoke wrappers.
6503
6504 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6505
6506         * cpu-ppc.md (store_memindex): Increase the size of this.
6507
6508 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6509
6510         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6511
6512         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6513
6514         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6515         OP_LCONV_TO_R_UN.
6516
6517         Last fix for of #467201.
6518
6519
6520 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6521
6522         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6523
6524         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6525         and long_conv_to_r8_2:
6526
6527         Fixed part of #467201.
6528
6529 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6530
6531         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6532
6533         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6534         conversion to 32 bits.
6535
6536         * cpu-x86.md: Increase the size of int_conv_to_r4.
6537
6538         * basic-float.cs: Add a test for this.
6539
6540         Fixed part of #467201.
6541
6542 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6543
6544         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6545
6546         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6547         conversion to 64 bits.
6548
6549         * basic-float.cs: Add a test for this.
6550
6551         Fixed part of #467201.
6552
6553 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6554
6555         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6556
6557         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6558         This behavior is compatible with MS.
6559
6560         * iltest.il.in: Add a test for this.
6561
6562         Fixed part of #467201.
6563
6564 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6565
6566         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6567
6568         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6569         change the precision of the value.
6570
6571         * cpu-x86.md: Define len for float_conv_to_r4.
6572
6573         * basic-float.cs: Add a test for this.
6574
6575         Fixed part of #467201.
6576
6577 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6578
6579         * mini.c: Adjust locking order to the new semantics where the loader lock
6580         comes first.
6581
6582 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6583
6584         * aot-runtime.c:
6585         * mini-amd64.c:
6586         * mini-arm.c:
6587         * mini-ia64.c:
6588         * mini-mips.c:
6589         * mini-ppc.c:
6590         * mini-sparc.c:
6591         * mini-trampolines.c:
6592         * mini-x86.c:
6593         * mini.c:
6594         * tramp-alpha.c:
6595         * tramp-amd64.c:
6596         * tramp-arm.c:
6597         * tramp-hppa.c:
6598         * tramp-ia64.c:
6599         * tramp-mips.c:
6600         * tramp-ppc.c:
6601         * tramp-s390.c:
6602         * tramp-s390x.c:
6603         * tramp-sparc.c:
6604         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6605
6606 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6607
6608         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6609         as it is incorrect.
6610
6611 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6612
6613         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6614         for cctors if needed.
6615
6616 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6617
6618         * mini-ppc.c: Fix build on Darwin.
6619
6620 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6621
6622         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6623         version instead of 3 as valgrind doesn't like version 3.
6624
6625         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6626
6627         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6628         usable for hashing methods.
6629         (emit_extra_methods): Use the new hash to avoid putting every method in the
6630         same hash bucket.
6631
6632         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6633
6634         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6635         whenever a method ref could match a method.
6636         
6637         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6638         test to fail.
6639         
6640         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6641         methods refs.
6642
6643         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6644
6645         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6646         the encoding buffer.
6647
6648         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6649         mono_method_get_header () on inflated methods as an optimization.
6650
6651 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6652
6653         * ssa.c (fold_ins): Fix another crash if the instruction following the
6654         switch was optimized away.
6655
6656 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6657
6658         Contributed under the terms of the MIT/X11 license by Steven
6659         Munroe <munroesj@us.ibm.com>.
6660
6661         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6662
6663 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6664
6665         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6666         around the mono_domain_alloc calls, it is now done by the functions
6667         themselves.
6668
6669         * aot-compiler.c (compile_method): Only add wrappers referenced by
6670         the method if compiling with full AOT.
6671         (mono_compile_assembly): Error out if --aot=full is specified on
6672         a platform where it is not supported.
6673
6674         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6675         on ARM too.
6676
6677         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6678         AOT support.
6679
6680         * aot-runtime.c (load_named_code): Handle 
6681         mono_arm_throw_exception_by_token.
6682
6683         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6684
6685         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6686         unaligned.
6687
6688         * Makefile.am (fullaotcheck): Exit if a test fails.
6689
6690         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6691         on ARM.
6692         (mono_compile_assembly): Handle the assembler failing.
6693
6694         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6695         accepting subsections of .bss.
6696
6697         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6698         was optimized away.
6699
6700         * aot-compiler.c: Remove some unused includes.
6701         
6702         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6703         now in MonoImageWriter.
6704
6705         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6706         code sequence which matches a non-virtual call. Fixes #472654.
6707
6708 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6709
6710         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6711         xdebug code.
6712         
6713         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6714         use the image/dwarf writers directly.
6715
6716         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6717         field.
6718
6719         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6720         MonoDwarfWriter.
6721
6722         * image-writer.h: Fix some typos.
6723
6724         * dwarfwriter.h dwarfwriter.c: New files.
6725         
6726         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6727         separate module.
6728
6729         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6730         argument to return unwind info.
6731
6732         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6733
6734         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6735         
6736         * aot-runtime.c (decode_method_ref): Add a case for 
6737         MONO_AOT_METHODREF_WRAPPER_NAME.
6738
6739         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6740         for AOT.
6741
6742         * aot-compiler.c (encode_method_ref): Use the new constants.
6743
6744         * aot-runtime.c (decode_method_ref): Ditto.
6745
6746         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6747         be compiled, not the icall itself.
6748
6749 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6750
6751         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6752         using decode_method_ref ().
6753
6754         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6755         convert it to an in32. Fixes #475859.
6756
6757         * arrays.cs: Add a test.
6758
6759 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6760
6761         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6762         OP_LCONV_TO_U2.
6763
6764         * basic-long.cs: Add a test.
6765
6766 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6767
6768         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6769         remove the frame pointer in leaf methods which don't receive any
6770         arguments, don't throw exceptions and don't do dynamic stack
6771         allocations.
6772
6773 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6774
6775         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6776         the fail_tramp changes. Hopefully fixes #475132.
6777
6778 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6779
6780         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6781         instead of mono_metadata_signature_dup_full.
6782
6783 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6784
6785         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6786         for processing jump tables. Fixes #473787.
6787
6788 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6789
6790         * mini-generic-sharing.c: mini_method_get_context() just calls
6791         mono_method_get_context_general() now.
6792
6793         * mini.c, mini.h: Moved get_object_generic_inst(),
6794         construct_object_context_for_method() and
6795         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6796
6797 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6798
6799         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6800         basic block fell through to its successor bblock without a branch. Fixes
6801         #474718.
6802
6803         * iltests.il.in: Add a test.
6804         
6805         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6806         (can_encode_patch): We can now handle arrays of generic parameters and
6807         array methods.
6808
6809         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6810
6811         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6812         the AOT file to avoid some #ifdefs in aot-runtime.c
6813
6814         * mini.h: Bump AOT file format version.
6815
6816 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6817
6818         * Makefile.am (fullaotcheck): Make this run the tests.
6819
6820         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6821
6822 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6823
6824         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6825         individually.  Fixes #473482.
6826
6827 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6828
6829         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6830
6831 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6832
6833         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6834         (mono_compile_assembly): Hush compile warnings about
6835         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6836         code path.
6837
6838 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6839
6840         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6841
6842         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6843
6844         * aot-compiler.c: Fix arm support.
6845
6846         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6847         img_writer_emit_unset_mode () function.
6848
6849         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6850         (mono_unwind_get_dwarf_pc_reg): Ditto.
6851
6852         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6853         Move almost all platform specific code to a set of arch_ functions, 
6854         and document them to ease porting.
6855         
6856         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6857
6858         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6859
6860         * aot-compiler.c: Extract the image writing functionality into a separate
6861         module to reduce the size of this file.
6862
6863 2009-02-09  Geoff Norton  <gnorton@novell.com>
6864
6865         * mini-s390.c: Fix the signature of emit_sig_cookie.
6866
6867 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6868
6869         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6870
6871         * aot-runtime.c (is_shared_got_patch): Ditto.
6872
6873         * aot-runtime.c (load_named_code): Cope with the fact that 
6874         decode_got_entry () won't decode the patch fully if its corresponding got
6875         entry is already filled.
6876         
6877         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6878         Initialize *ji.
6879         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6880
6881         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6882         as the moving pointer instead of 'buf' for consistency with the rest of the
6883         codebase.
6884         (mono_arch_create_monitor_exit_trampoline): Ditto.
6885
6886         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6887         generic_class_init trampolines.
6888         (add_generic_class): Extract some code from add_generic_instances () into a
6889         separate function so it can be called from other places too.
6890         (compile_method): Call add_generic_class () for the classes of inflated methods
6891         referenced by the method.
6892         (can_encode_patch): Allow references to generic parameters.
6893
6894         * aot-runtime.c: Add support the patches required by the new trampolines.
6895         
6896         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6897         support.
6898
6899         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6900         full-aot support.
6901
6902         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6903         this from get_throw_pending_exception, make the signature full aot compatible.
6904
6905         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6906
6907         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6908
6909         * exceptions.cs: Add a test.
6910
6911 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6914         use the DWARF_DATA_ALIGN constant instead.
6915
6916         * exception-<ARCH>.c: Update after the above change.
6917
6918         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6919         dwarf unwinder.
6920
6921         * mini-arm.c: Enable the dwarf unwinder.
6922
6923         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6924         instead of mono_class_setup_vtable ().
6925
6926 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6927
6928         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6929         dwarf unwinder.
6930
6931         * mini-x86.h: Enable the dwarf unwinder.
6932
6933 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6934
6935         Fix mcs/tests/test-7.cs
6936         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6937         2009-02-03.
6938
6939 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6940
6941         * mini.c (print_jit_stats): Remove some unused statistics.
6942
6943 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6944
6945         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6946
6947 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6948
6949         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6950         the method we get from mono_object_get_virtual_method() because
6951         that function does it properly, now.
6952
6953 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6954
6955         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6956         opcodes. Fixes #472775.
6957
6958 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6959
6960         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6961         fact that mono_find_jit_info() sometimes returns the context
6962         corresponding to the jit info in new_ctx.  Fixes #472600.
6963
6964 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6965
6966         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6967         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6968         klass->enum_basetype directly.
6969
6970         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6971         enum subtypes.
6972
6973         * unwind.c: Avoid 0 sized arrays.
6974
6975 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6978         size on systems with 64k pages. Fixes #471389.
6979
6980 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6981
6982         Contributed under the terms of the MIT/X11 license by Steven
6983         Munroe <munroesj@us.ibm.com>.
6984
6985         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6986         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6987         necessary.
6988
6989 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6990
6991         Contributed under the terms of the MIT/X11 license by Steven
6992         Munroe <munroesj@us.ibm.com>.
6993
6994         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6995         comparison fix.
6996
6997         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6998         The trampoline can be longer on PPC64.
6999
7000 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7001
7002         Contributed under the terms of the MIT/X11 license by Steven
7003         Munroe <munroesj@us.ibm.com>.
7004
7005         * mini-ppc.c: Compiler warning fixes and trivial code
7006         simplifications.
7007
7008 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7009
7010         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7011         ins->dreg which could be a hardware register, not a vreg.
7012
7013         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7014         
7015         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7016         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7017
7018         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7019         
7020         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7021         ->dreg, that is not the vreg we are looking for.
7022
7023         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7024
7025         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7026         LIVERANGE_END.
7027
7028         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7029         strange crashes.
7030
7031 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7032
7033         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7034
7035         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7036         the line diff is 0.
7037
7038         * aot-compiler.c: Add xdebug support on x86.
7039
7040         * unwind.c: Add x86 support.
7041         
7042         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7043         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7044
7045         * mini.c (mini_method_compile): Ditto.
7046         
7047         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7048         the variable index.
7049
7050         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7051         which mimic .push_section/.pop_section in GAS.
7052         
7053         * aot-compiler.c: Emit precise live range information for variables.
7054
7055         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7056
7057         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7058         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7059         them.
7060
7061         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7062         the live ranges of variables.
7063
7064         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7065         of the variable in terms of native offsets.
7066
7067 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7068
7069         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7070         
7071 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7072
7073         Contributed under the terms of the MIT/X11 license by Steven
7074         Munroe <munroesj@us.ibm.com>.
7075
7076         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7077         order (offset then base reg) for ppc_load_multiple_regs.
7078         (emit_save_saved_regs) Correct operand order for
7079         ppc_store_multiple_regs.
7080         (mono_arch_get_call_filter): Correct operand order for
7081         ppc_load_multiple_regs.
7082
7083         * mini-ppc.c (emit_memcpy): Fix operand order for
7084         ppc_load_reg_update and ppc_store_reg_update.
7085         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7086         (mono_arch_emit_epilog): Correct operand order for
7087         ppc_load_multiple_regs.
7088
7089         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7090         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7091
7092 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7093
7094         * cpu-ppc64.md: Fixed storer4_memindex length.
7095
7096 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7097
7098         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7099         line number info.
7100         
7101         * aot-compiler.c (emit_line_number_info): Optimize this.
7102
7103 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7104
7105         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7106         
7107         * aot-compiler.c: Add debug info for methods without debug info by
7108         emitting an IL file and having the line number info referencing that file.
7109
7110         * aot-compiler.c: Optimize the size of the generated line number info.
7111
7112         * aot-compiler.c: Emit line number info in xdebug mode.
7113
7114         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7115         million arguments.
7116
7117 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7118
7119         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7120
7121         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7122         is used.
7123
7124 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7125
7126         * basic-calls.cs: Test for the weird crash found on arm.
7127         
7128 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7129
7130         * cpu-arm.md: Increase the size of storer8_membase_reg and
7131         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7132
7133         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7134         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7135         reg to LR otherwise we'll be loading/storing from just the offset.
7136
7137 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7138
7139         Question: if we are storing gint32's inside the "*native_offset",
7140         should we change the signature to "gint32 *native_offset" to
7141         ensure that we do not have type definition problems?
7142         
7143         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7144         an int * as this is what the other function expects, causes
7145         problems with Freescale's compiler that defined int32_t to be a
7146         long and makes int incompatible 
7147
7148 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7149
7150         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7151         filename conflict with bjam.
7152
7153 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7154
7155         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7156         as it might use decomposed ops.
7157
7158 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7159
7160         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7161
7162         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7163         is defined.
7164
7165         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7166
7167         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7168         offsets.
7169
7170         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7171         way registers are stored in MonoContext on arm.
7172
7173         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7174         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7175
7176         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7177
7178         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7179
7180         * mini.c (mini_init): Register mono_isfinite.
7181
7182         * jit-icalls.c (mono_isfinite): New jit icall.
7183
7184         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7185         
7186         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7187         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7188         the parent frame.
7189
7190 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7191
7192         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7193         separate frame and stack pointers, so we must use FP to find the register
7194         spill area.
7195         The FP reg is retrieved from the MonoContext::regs array.
7196
7197 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7198
7199         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7200         as FPA requires it.
7201
7202 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7203
7204         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7205         return R4 and R8 when not running under softfloat.
7206
7207         Fixes basic-calls.exe
7208
7209 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7210
7211         * mini-arm.c: Implement some overflow opcodes.
7212
7213 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7214
7215         * ssa.c: handle another alloca.h
7216
7217         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7218         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7219         MONO_ARCH_USE_SIGACTION. 
7220
7221         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7222         capability defines.
7223
7224         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7225
7226         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7227         PPC targets as sigaction does not exist on all platforms, define
7228         this on a per-platform basis.
7229
7230         Instead of erroring out if the platform is not defined, include
7231         mini-ppc-os.h, and expect that the OS specific setting provides
7232         the required information.   
7233
7234 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7235
7236         * aot-compiler.c: Fix --enable-minimal=aot.
7237
7238 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7239
7240         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7241         previous change.
7242
7243 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7244
7245         * exceptions-arm.c: Fix warnings.
7246
7247         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7248         ARM.
7249
7250         * mini-x86.c: Fix --enable-minimal=jit build.
7251
7252         * mini.c: Really fix --enable-minimal=jit build.
7253         
7254         * mini.c (construct_object_context_for_method): Move this outside
7255         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7256
7257         "Backported" of r124984 from 2.0 branch.
7258         
7259         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7260
7261         "Backport" of r124977 + r124978 from 2.0 branch.
7262         
7263         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7264         to avoid calling mono_exception_from_token () from the throw trampoline.
7265         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7266         for throwing corlib exceptions, this fixes full-aot support for corlib
7267         exceptions.
7268
7269         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7270
7271 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7272
7273         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7274         part of the changes to split the code in mini into operating
7275         system specific files.
7276
7277         This patch was done by copying mini.c to the respective files to
7278         preserve SVN history.
7279
7280 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7281
7282         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7283
7284 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7285
7286         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7287         remoting-invoke-with-check wrappers of shared methods.
7288
7289         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7290
7291 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7292
7293         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7294         optimization if the top of stack is the last instruction in the
7295         bblock.  Otherwise it might have been used after its definition.
7296         Fixes #469742.
7297
7298 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7299
7300         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7301         method as well when get_vcall_slot () fails to match a code sequence.
7302
7303         * mini-arm.c: Fix the android build, which doesn't have
7304         __aeabi_read_tp.
7305
7306 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7307
7308         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7309         the s390x build.
7310
7311 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7312
7313         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7314
7315 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7316
7317         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7318         and put its id into jinfo->used_regs. This is only used on amd64,
7319         which is currently the only platform generating unwind info.
7320
7321         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7322         the dwarf unwinder. This is required to correctly handle async exceptions
7323         like thread abort and stack overflows, which can happen while a method
7324         is in the middle of its prolog or epilog.
7325         
7326         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7327         the unwind info belonging to an AOTed method.
7328
7329         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7330         into cfg->unwind_ops.
7331         
7332         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7333
7334         * mini.c (mini_init): Call mono_unwind_init ().
7335         (mini_cleanup): Call mono_unwind_cleanup ().
7336
7337         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7338         unwind info to be shared between methods.
7339
7340         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7341         saved in the LMF.
7342
7343         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7344         get_throw_pending_exception () to avoid initialization races.
7345
7346         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7347         mono_arch_exceptions_init () function.
7348
7349         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7350
7351 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7352
7353         * mini.c (mono_get_domain_intrinsic): New helper function.
7354         (mono_get_thread_intrinsic): Ditto.
7355
7356         * mini-arm.c mini-ia64.c: Use the new helper functions.
7357         
7358         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7359         the last constrained_call change, since it is needed in the non-AOT
7360         case as well.
7361
7362         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7363         
7364         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7365         mono_get_lmf_addr () on arm eabi linux.
7366
7367 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7370         code sequence which matches a non-virtual call.
7371
7372 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7373
7374         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7375         stack pointer (r1).
7376
7377 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7380         runtime-invoke wrappers, since they are also shared based on signature.
7381
7382 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7383
7384         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7385         info from the (correct) context.
7386
7387 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7388
7389         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7390         
7391         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7392         using dwarf unwinding info. Not yet used.
7393
7394         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7395
7396 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7397
7398         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7399         descriptors.
7400
7401         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7402         special case and handle mono_arch_delegate_invoke_impl() returning
7403         function descriptors.
7404
7405         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7406         trampolines return function descriptors, too.
7407
7408 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7409
7410         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7411         out_of_line optimization.
7412
7413 2009-01-21  Martin Baulig  <martin@ximian.com>
7414
7415         * mini.h
7416         (MonoCompile): Added `disable_deadce_vars' to disable removing
7417         unused variables.
7418
7419         * mini.c
7420         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7421         inside the debugger.
7422
7423         * liveness.c (mono_analyze_liveness): Don't remove any unused
7424         variables if `cfg->disable_deadce_vars' is set.
7425
7426 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7427
7428         * method-to-ir.c: Only apply exception constructor optimization if
7429         the the method actually belongs to an exception class.  Fixes
7430         #467456.
7431
7432 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7433
7434         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7435         change inside a #ifdef __mono_ppc64__.
7436
7437         * aot-compiler.c (compile_method): Remove the previous limitation.
7438
7439         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7440         on type variables in AOTed code.
7441         
7442         * aot-compiler.c (compile_method): Skip generic methods having type 
7443         constraints on their generic parameters.
7444
7445         * aot-compiler.c (compile_method): Check for methods which cannot be
7446         encoded inside RGCTX_FETCH patches as well.
7447
7448         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7449         build.
7450
7451 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7452
7453         * method-to-ir.c: Force the vtable variable in shared generic code
7454         for the case that they might show up on a stack trace where they
7455         are needed.
7456
7457         * mini-exceptions.c: Save and use generic sharing info as well as
7458         IP in stack traces to resolve shared generic instantiations.
7459
7460 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7461
7462         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7463         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7464
7465 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7466
7467         * method-to-ir.c: Do generic sharing for array constructors.
7468
7469 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7470
7471         * mini-exceptions.c (mono_print_thread_dump): Add information
7472         about the thread state using wapi_current_thread_desc.
7473
7474 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7475
7476         * basic-simd.cs: Tests for the new constructors. 
7477
7478 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7479
7480         * mini-ops.h: Added OP_EXPAND_*
7481
7482         * cpu-x86.md: Same.
7483
7484         * mini-x86.c (mono_arch_output_basic_block): Same.
7485         
7486         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7487
7488 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7489
7490         * iltests.il.in: Add a test for #467385.
7491
7492 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7493
7494         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7495         thread been cleaned up is not the same currently in execution.
7496
7497         Fixes appdomain-unload crashes on windows, osx and linux variants
7498         without the __thread keyword.
7499
7500 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7501
7502         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7503         (koush@koushikdutta.com). Implement this for android.
7504
7505         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7506         begins with a digit.
7507
7508         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7509         mono_marshal_get_write_barrier ().
7510
7511 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7512
7513         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7514         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7515         that pass them on a register pair.
7516
7517         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7518         test was crashing due to that.
7519
7520 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7521
7522         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7523         trampoline code. Include ucontext.h only if available.
7524
7525 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7526
7527         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7528         and doesn't check whether it's sharable, like it was before
7529         removing the shared generics hash.  This brings IronPython
7530         performance back to what it was before that change.
7531
7532 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7533
7534         * method-to-ir.c: Handle delegate invocation optimization earlier,
7535         otherwise it would be handled (much more slowly) by the
7536         final/sealed optimization.
7537
7538 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7539
7540         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7541         domain is not set. Fixes #465864.
7542
7543 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7544
7545         * method-to-ir.c: Don't stop sharing of generic methods with catch
7546         clauses - we already handle those.
7547
7548 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7549
7550         * mini.c, mini.h: lookup_generic_method() is now
7551         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7552         making the shared_generics_hash obsolete.
7553
7554 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7555
7556         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7557         use the red zone.  Make room on the stack first and then use it,
7558         not the other way around.
7559
7560 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7561
7562         * mini.c (mini_init): Call mono_xdebug_init ().
7563
7564         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7565
7566 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7567
7568         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7569
7570         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7571         trampolines.
7572
7573         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7574         debug+unwind info for trampolines.
7575
7576         * mini.c (mono_create_unwind_op): New helper function.
7577
7578         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7579
7580 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7581
7582         * aot-compiler.c: Fix the build.
7583
7584 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7585
7586         * Makefile.am: Update dtrace-prelink.sh location.
7587
7588 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7589
7590         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7591         optimization. Fixes #464520.
7592
7593 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7594
7595         * mini-amd64.c : Adding code to save/restore non-volatile registers
7596            on Winx64.
7597
7598         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7599           registers on Winx64.
7600
7601         Contributed under MIT/X11 license.
7602
7603 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7604
7605         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7606         __GNUC_MINOR__ which can break when the major version changes.
7607
7608 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7609
7610         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7611
7612 2009-01-07  Geoff Norton  <gnorton@novell.com>
7613
7614         * helpers.c:  Allow mono -v -v -v to work on darwin.
7615
7616 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7617
7618         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7619           pattern. 
7620
7621         Contributed under MIT/X11 license.
7622
7623 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7624
7625         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7626         instead of directly accessing type->data.klass. Fixes #462016.
7627         (mono_allocate_stack_slots_full): Ditto.
7628
7629         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7630         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7631
7632         * aot-compiler.c (emit_plt): Fix ARM build.
7633
7634 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7635
7636         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7637         
7638         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7639         change.
7640
7641         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7642         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7643         #463357.
7644
7645         * iltests.il.in: Add a regression test.
7646
7647 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7648
7649         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7650
7651 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7652
7653         * basic-simd.cs: Add a regression test for #462457.
7654
7655 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7656
7657         * mini-ops.h: Add a definition of XPHI.
7658
7659         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7660
7661         * ssa.c (op_phi_to_move): Handle XPHI.
7662
7663         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7664
7665         Fixes #462457
7666
7667 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7668
7669         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7670
7671 2008-12-31  Geoff Norton  <gnorton@novell.com>
7672
7673         * mini-ppc.c: The prolog size allocated can be too small for darwin
7674         ppc32 under certain circumstances.  Also fix a small logic bug.
7675
7676 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7677
7678         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7679         while loading AOT methods.
7680
7681         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7682         since only the former is nulled out after a successful cast. This prevents
7683         crashes with rethrown exceptions when using --debug=casts.
7684
7685 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7686
7687         * mini.h: New macro for checking whether a method is final,
7688         i.e. whether the method or its class is marked final.
7689
7690         * method-to-ir.c: Use the new macro for all final-checks
7691         consistently.  Fixes the crash in the System.ServiceModel tests.
7692
7693 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7694
7695         * mini-exceptions.c (get_exception_catch_class): Corrected another
7696         overly strict assertion.
7697
7698 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7699
7700         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7701         Clobbering it is not allowed because the caller might use it as
7702         the vtable register in the interface call.
7703
7704 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7705
7706         * mini-exceptions.c (get_exception_catch_class): Corrected an
7707         overly strict assertion.
7708
7709 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7710         
7711         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7712
7713         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7714
7715         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7716
7717         * cpu-mips.md: correct lengths for certain long_ opcodes.
7718
7719         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7720
7721         * 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().
7722         
7723 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7724
7725         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7726         
7727 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7728         
7729         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7730         
7731 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7732
7733         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7734         next basic block.
7735         
7736 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7737
7738         * 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
7739
7740         * 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)
7741         
7742 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7743         
7744         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7745         
7746 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7747
7748         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7749         gshared code. Fixes #458947.
7750
7751         * generics.cs: Add a test.
7752
7753 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7754         
7755         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7756         
7757         * mini-mips.c: first pass n32 code generation.
7758
7759         * mini-mips.h: datatypes and defines for n32 support.
7760
7761         * exceptions-mips.c: first pass n32 code generation.
7762         
7763         * tramp-mips.c: first pass n32 code generation.
7764         
7765         * cpu-mips.md: add long_ opcodes.
7766         
7767 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7768
7769         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7770
7771         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7772         
7773         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7774         
7775         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7776
7777         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7778
7779         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7780
7781         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7782
7783         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7784
7785         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7786
7787 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7788
7789         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7790
7791 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7792
7793         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7794
7795 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7796
7797         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7798         descriptors for helper functions directly in front of the code.
7799
7800 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7801
7802         * method-to-ir.c: Removed an unnecessary assertion.
7803
7804 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7805
7806         * method-to-ir.c: Merge SGEN changes from the old JIT.
7807
7808 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7809
7810         * driver.c (compile_all_methods_thread_main): Handle failure of
7811         mono_get_method ().
7812
7813 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7814
7815         * mini-ppc.c: Merged with mini-ppc64.c.
7816
7817         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7818
7819         * Makefile.am: Use the same sources for PPC and PPC64.
7820
7821         * mini-ppc64.c: Removed.
7822
7823 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7824
7825         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7826         code to mono_bb_is_fall_through.
7827         
7828         * branch-opts.c (mono_remove_critical_edges): Same.
7829
7830 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7831
7832         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7833         expect that an OP_BR_REG will be there.
7834
7835 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7836
7837         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7838         for the many branch ops. The original check miss OP_BR_REG.
7839
7840         Fixes #457574.
7841         
7842 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7843
7844         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7845
7846 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7847
7848         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7849         while holding the aot lock.
7850
7851 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7852
7853         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7854         
7855 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7856
7857         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7858           to release all runtime callable wrappers held by the runtime.
7859
7860         Contributed under MIT/X11 license.
7861
7862 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7863
7864         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7865           for Winx64.
7866
7867         Contributed under MIT/X11 license.
7868
7869 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7870
7871         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7872         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7873
7874 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7875
7876         * cpu-mips.md: fix ckfinite length
7877
7878         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7879         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7880         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7881         
7882 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7883
7884         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7885         
7886 2008-12-08  Geoff Norton  <gnorton@novell.com>
7887
7888         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7889         size by 8 bytes as well.
7890
7891 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7892
7893         * basic-simd.cs: Fix method names for Vector16b.
7894         
7895 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7896
7897         * basic-simd.cs: Fix method names for Vector16sb.
7898
7899 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7900
7901         * basic-simd.cs: Fix method names for Vector8us.
7902         
7903 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7904
7905         * basic-simd.cs: Fix method names for Vector8s.
7906         
7907 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7908
7909         * basic-simd.cs: Fix method names for Vector4ui.
7910
7911 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7912
7913         * basic-simd.cs: Fix method names for Vector2l.
7914
7915 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7916
7917         * basic-simd.cs: Fix method names for Vector2d.
7918
7919 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7920
7921         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7922         that are extension methods.
7923
7924 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7925
7926         * basic-simd.cs: Fix method names for Vector4f.
7927
7928 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7929
7930         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7931         as such. Fixes #456669.
7932
7933 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7934
7935         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7936         
7937 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7938
7939         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7940         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7941         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7942         (mips_adjust_stackframe): handle FP spills
7943                 
7944         * mini-ops.h: add mips_mtc1_s2
7945         
7946         * cpu-mips.md: add mips_mtc1_s2
7947         
7948 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7949
7950         * unwind.c: New file, move the unwind info encoding functions here from
7951         aot-compiler.c, so they could be used at runtime too.
7952
7953 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7954
7955         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7956         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7957         
7958 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7959
7960         * mini-mips.c: cleanup warnings
7961         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7962         (mips_adjust_stackframe): handle case of taking the address of stack locals
7963         
7964 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7965
7966         * aot-compiler.c: Implement a few functions missing from the asm writer.
7967         (emit_method_code): Only write symbols for methods when using the bin
7968         writer, since the assembler can't deal with the characters in our method
7969         names.
7970
7971         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7972
7973         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7974         call.
7975
7976         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7977         a bit to also restore %rax.
7978
7979 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7980
7981         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7982
7983 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7986         arguments.
7987
7988 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7989
7990         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7991
7992         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7993         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7994
7995         * exceptions-ppc64.c: Removed.
7996
7997         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7998
7999 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8000
8001         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8002         tramp-ppc64.c.
8003
8004         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8005
8006         * tramp-ppc64.c: Removed.
8007
8008 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8009
8010         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8011         the TYPESPEC table.
8012
8013 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8014
8015         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8016
8017         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8018         mini-ppc.h instead of mini-ppc64.h.
8019
8020         * mini-ppc64.h: Removed.
8021
8022 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8023
8024         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8025         
8026         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8027         
8028 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8029
8030         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8031         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8032         code easier.
8033
8034 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8035
8036         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8037
8038 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8039
8040         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8041
8042 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8043
8044         * basic-simd.cs: Tests for operator == and != on Vector4f.
8045
8046 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8047
8048         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8049
8050         * simd-intrinsics.c: Kill useless enum.
8051
8052 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8053
8054         * cpu-mips.md: add long_conv_to_ovf_i4_2
8055         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8056
8057 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8058
8059         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8060         
8061         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8062
8063 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8064
8065         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8066         
8067 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8068
8069         * basic-simd.cs: Add tests for new methods.
8070
8071 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8072
8073         * simd-intrinsics.c: Add support for operator == and !=
8074         on Vector4(u)i.
8075
8076         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8077
8078 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8079
8080         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8081
8082 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8085
8086         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8087         MONO_PATCH_INFO_ICALL_ADDR.
8088
8089         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8090
8091         * aot-compiler.c: Resurrect full-aot support.
8092
8093 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8094
8095         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8096         
8097 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8098
8099         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8100         
8101 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8102
8103         * basic-simd.cs: Fix tests to work under ppc.
8104         Remove tests for methods that will be removed.
8105
8106 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8107
8108         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8109         generic type (via a typedef or typeref) correctly.
8110
8111 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8112
8113         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8114         diagnose an assertion failure.
8115
8116 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8117
8118         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8119         Fix trampoline size.
8120
8121         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8122         conversion opcodes are implemented natively instead via emulation.
8123
8124 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8125
8126         * cpu-mips.md: remove mips_xori
8127
8128         * mini-ops.h:  remove mips_xori
8129
8130         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8131
8132         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8133         
8134         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8135         
8136 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8137
8138         * cpu-mips.md: fix instruction lengths.
8139
8140         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8141
8142         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8143
8144         * mini-ops.h: fix slti / sltiu op profiles.
8145         
8146 2008-12-02  Martin Baulig  <martin@ximian.com>
8147
8148         * method-to-ir.c (mono_method_to_ir): Disable debugging
8149         information for the init locals block to make the debugger stop
8150         after all locals have been initalized.
8151
8152 2008-12-02  Martin Baulig  <martin@ximian.com>
8153
8154         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8155         running inside the debugger.
8156
8157 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8160         is enabled.
8161
8162         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8163         alu->alu imm optimization which only shows if deadce is disabled.
8164
8165         * aot-compiler.c: Rename the function names for the binary and asm writers
8166         so they can coexist in the same process. Rework the xdebug code to use the
8167         asm writer. This avoids the need to call into the runtime to dump the
8168         debugging info. Add more debugging info for types.
8169
8170         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8171
8172         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8173         cpu description tables, they can't occur in cpu-<ARCH>.md.
8174
8175         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8176         the stack in CEE_LDFLDA. Fixes #450542.
8177
8178         * generics.cs: Add a new test.
8179
8180 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8181
8182         * mini-ops.h: updated MIPS opcodes
8183         * mini-mips.c: decompose long opts
8184         * mini-mips.h: decompose long opts
8185         
8186 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8187
8188         * cpu-mips.md: fix length on int_rem_un
8189         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8190         
8191 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8192
8193         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8194
8195         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8196
8197 2008-11-29  Martin Baulig  <martin@ximian.com>
8198
8199         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8200         mono_debug_using_mono_debugger() in addition to the
8201         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8202
8203 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8204
8205         * mini-ops.h: updated more MIPS opcodes
8206         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8207         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8208         
8209 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8210
8211         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8212
8213 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8214
8215         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8216         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8217         * mini-ops.h: correct selected mips opcode entries
8218         
8219 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8220
8221         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8222         make them work.
8223
8224 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8225
8226         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8227
8228 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8229
8230         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8231         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8232         * mini-mips.h: disable IMT
8233         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8234         
8235 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8236
8237         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8238
8239 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8240
8241         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8242
8243 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8244
8245         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8246         consistency.
8247
8248 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8249
8250         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8251         for Set/GetVector aligned versions.
8252
8253 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8254
8255         * basic-simd.cs: Add tests for Get/SetVector.
8256
8257 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8258
8259         * mini.c: Removed g_slist_append_mempool().  Now in
8260         metadata/mempool.c.
8261
8262 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8263
8264         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8265         size properly and make the bounds check optional.
8266
8267         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8268         for SetVector and IsAligned.
8269
8270 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * mini.c: Remove unused mono_normalize_opcodes () function.
8273
8274 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8275
8276         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8277         using the new atomic add ops now.
8278
8279         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8280         add.
8281
8282 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8283
8284         * mini-ppc64.c: Several fixes.
8285
8286 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8287
8288         * cpu-mips.md: added jump_table
8289         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8290
8291 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8292
8293         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8294
8295 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8296
8297         * mini-ops.h: corrected a handful of MIPS opcodes.
8298
8299 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8300
8301         * aot-compiler.c: MIPS to use ELF writer
8302
8303 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8304
8305         * mini-codegen.c: remove MIPS specific assert.
8306
8307 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8308
8309         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8310         fixes.  PPC64 now passes most of the runtime regressions.
8311
8312 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8313
8314         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8315         volatile intervals a bit.
8316
8317 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8318
8319         * basic-long.cs: New test case.
8320
8321 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8322
8323         * mini.c (mini_method_compile): Disable globalra for large methods for 
8324         now.
8325
8326         * regalloc2.c (order_moves): Add fp support.
8327
8328         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8329         source bblock ends with an OP_BR_REG.
8330
8331         * ratests.cs: Add a new test.
8332
8333 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8334
8335         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8336         sharing.  PPC64 now passes generics.exe.
8337
8338 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8339
8340         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8341
8342 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8343
8344         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8345         memory when mono_jit_info_table_find () can't find the method in the
8346         LMF case.
8347
8348         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8349         AOTed code too.
8350         
8351         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8352         writer too.
8353
8354 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8355
8356         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8357         Several fixes.  PPC64 now runs exceptions.exe and
8358         devirtualization.exe.
8359
8360 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8361
8362         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8363         arrays.exe and basic-math.exe.
8364
8365 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8366
8367         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8368         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8369
8370 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8371
8372         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8373
8374 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8375
8376         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8377
8378         * ir-emit.h: Move macros from method-to-ir.c to here.
8379
8380 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8381
8382         * mini-ops.h: Correct the long simd ops to use LREG.
8383
8384 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8385
8386         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8387         
8388         * mini-ops.h: Correct the dreg type of a few long opcodes.
8389
8390         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8391         Add netbsd support.
8392
8393 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8394
8395         * mini-ppc.c: remove negative stack references in epilog
8396         for platforms that don't support the red zone.
8397
8398 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8399
8400         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8401         point regs.  Now PPC64 passes basic-calls.exe.
8402
8403 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8404
8405         * basic-simd.cs: Add tests for accessors of Vector2l.
8406
8407 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8408
8409         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8410
8411         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8412         
8413         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8414
8415 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8416
8417         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8418         PPC64 passes basic-long.exe.
8419
8420 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8421
8422         * decompose.c: Decompose carry and overflow add on PPC64 like on
8423         other 64 bit archs.  Don't decompose sub at all on PPC64.
8424
8425         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8426         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8427         basic-long.exe.
8428
8429 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8430
8431         * basic-simd.cs: Add tests for accessors of Vector2d.
8432
8433 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8434
8435         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8436
8437         * cpu-x86.md: Same.
8438
8439         * mini-x86.c (mono_arch_output_basic_block): Same.
8440         
8441         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8442
8443 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8444
8445         * basic-simd.cs: Add tests for accessors of Vector4f.
8446
8447 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8448
8449         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8450
8451         * cpu-x86.md: Same.
8452
8453         * mini-x86.c (mono_arch_output_basic_block): Same.
8454         
8455         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8456
8457 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8458
8459         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8460
8461 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8462
8463         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8464
8465         * cpu-x86.md: Same.
8466
8467         * mini-x86.c (mono_arch_output_basic_block): Same.
8468         
8469         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8470
8471 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8472
8473         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8474
8475 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8476
8477         * simd-intrinsics.c: Enable setters for Vector16sb.
8478
8479 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8480
8481         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8482
8483         * cpu-x86.md: Same.
8484
8485         * mini-x86.c (mono_arch_output_basic_block): Same.
8486         
8487         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8488
8489 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8490
8491         * simd-intrinsics.c: Implement setter for Vector8us.
8492
8493 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8494
8495         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8496         for dead variables.
8497
8498 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8499
8500         * mini-ppc.c: remove references to the red zone in the prolog
8501         (for systems that don't support it).
8502
8503 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8504
8505         * cpu-ppc64.md: Fixed a few instruction lengths.
8506
8507         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8508         now.
8509
8510 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8511
8512         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8513         basic.exe now.
8514
8515 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8516
8517         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8518
8519 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8520
8521         * mini-ops.h: Added OP_INSERT_I2.
8522
8523         * cpu-x86.md: Same.
8524
8525         * mini-x86.c (mono_arch_output_basic_block): Same.
8526         
8527         * simd-intrinsics.c: Implement setter for Vector8s.
8528
8529         * simd-methods.h: Add the names of get setters of Vector8s.
8530
8531 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8532
8533         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8534         
8535         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8536         parameters.
8537
8538         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8539
8540 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8541
8542         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8543         for PPC64.  An empty program runs now.
8544
8545 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8546
8547         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8548
8549         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8550         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8551         info for JITted code is emitted into a shared library, loadable into gdb.
8552
8553 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8554
8555         * Makefile.am: Changes to build PPC64.
8556
8557         * mini-arch.h: Include mini-ppc64.h on PPC64.
8558
8559 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8560
8561         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8562         in PPC code up to r119147.
8563
8564 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8565
8566         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8567         cpu-ppc64.md: Changes for PPC64.
8568
8569         Based on code submitted by andreas.faerber@web.de at
8570         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8571         X11/MIT license.
8572
8573 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8574
8575         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8576         cpu-ppc64.md: Copied from the corresponding PPC files from
8577         r118846.
8578
8579 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8580
8581         * mini-ops.h: Added OP_ROUND.
8582
8583         * cpu-x86.md: Added round.
8584
8585         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8586
8587         * basic-math.cs: Added test_0_round to test rounding.
8588
8589         Contributed under MIT/X11 license.
8590
8591 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8592
8593         * aot-compiler.c : Fix the Winx64 build.
8594
8595         Contributed under MIT/X11 license.
8596
8597 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8598
8599         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8600         in OP_EXTRACT_R8 to avoid possible stack corruption.
8601
8602 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8603
8604         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8605
8606         * cpu-x86.md: Added extract_r8.
8607
8608         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8609         
8610         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8611         a couple of OP_EXTRACT_I4.
8612
8613         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8614
8615         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8616
8617 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8618
8619         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8620         and not 4.1. 
8621
8622 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8623
8624         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8625         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8626
8627         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8628         are not needed any more.
8629
8630         * mini.h: Remove the unused INS_LIST macros.
8631
8632         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8633         longer needed.
8634
8635         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8636         ir-emit.h.
8637
8638         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8639         mono_alloc_ireg () instead.
8640
8641         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8642         macros.
8643
8644         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8645         on amd64.
8646
8647         * aot-runtime.c (load_aot_module): Disable AOT when running under
8648         CAS.
8649
8650         * mini-amd64.h: Change the monitor fastpath defines to check for
8651         !PLATFORM_WIN32 so they work on *bsd too.
8652
8653         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8654
8655         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8656
8657         * mini.h (MonoCompile): Remove new_ir flag.
8658
8659         * regalloc.h regalloc.c: Remove unused code.
8660
8661         * cpu-*.md: Remove more unused opcodes.
8662
8663         * simple-cee-ops.h simple-mini-ops.h: Removed.
8664
8665         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8666         
8667 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8668
8669         * aliasing.h: Removed.
8670
8671         * *.c: Remove references to aliasing.h and inssel.h.
8672
8673         * mini.c: Remove additional unused functions.
8674
8675         * mini-ops.h cpu-*.md: Remove unused opcodes.
8676
8677 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8678
8679         Remove the old JIT code.
8680
8681         * inssel*.brg: Removed.
8682
8683         * ssa.c abcremoval.c aliasing.c: Removed.
8684
8685         * ssa2.c: Renamed to ssa.c.
8686
8687         * abcremoval2.c: Renamed to abcremoval.c.
8688
8689         * *.c: Removed all !cfg->new_ir code.
8690
8691         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8692         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8693
8694         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8695         
8696 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8697
8698         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8699         to simplify the code and cut back on the number of global symbols in the AOT
8700         file.
8701         
8702         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8703
8704 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8705
8706         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8707         with the got/got_info tables.
8708
8709         * mini.h: Bump AOT file format version.
8710         
8711         * unwind.h: New file, contains definitions for stack unwinding.
8712
8713         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8714         to cfg->unwind_ops.
8715         
8716         * aot-compiler.c: Generalize the emitting of unwind information to use the
8717         information in cfg->unwind_ops.
8718
8719         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8720
8721         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8722         AOT method frames. Enable writing symbols for methods by default.
8723
8724 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8725
8726         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8727         and make it work with vectors of element sizes 1, 2 and 4.
8728
8729         * simd-intrinsics.c: Enable getter for all vectors with element size
8730         1, 2 or 4.
8731
8732         * simd-methods.h: Add the names of other getters.
8733
8734         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8735
8736         * cpu-x86.md: Same.
8737
8738         * mini-x86.c: Same.
8739
8740 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8741
8742         * mini-ppc.h: portability fix.
8743
8744 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8745
8746         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8747         buggy and will overwrite it.
8748
8749 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8752         Use it to emit local symbols for all methods so AOTed methods show up with
8753         their full name in gdb/valgrind output.
8754
8755 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8756
8757         * mini-ppc.c: portability fixes.
8758
8759 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8760
8761         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8762         entries out of the if (!generic_shared...) code so it is always done.
8763         (mono_class_init_trampoline): Do the patching when running under valgrind
8764         too, newer versions of valgrind have no problems with it.
8765
8766 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8769         further sections.
8770
8771 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8772
8773         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8774         filters.
8775
8776 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8777
8778         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8779
8780 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8781
8782         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8783
8784         * cpu-x86.md: Same.
8785
8786         * mini-x86.c: Same.
8787
8788         * simd-intrinsics.c: Same.
8789
8790 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8791
8792         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8793
8794 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8795
8796         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8797         to work with more Vector types.
8798
8799 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8800
8801         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8802         store the elemens directly instead of using and intermediate.
8803
8804 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8805
8806         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8807
8808         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8809         to preserve %eax for aot plt trampolines.
8810
8811         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8812         (encode_method_ref): Flag synchronized methods so they won't go through
8813         the AOT trampoline.
8814
8815         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8816         wrappers.
8817
8818         * cpu-ia64.md (jmp): Increase max length.
8819
8820 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8821
8822         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8823         open generic classes.
8824
8825         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8826
8827         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8828         box+brtrue optimization since it causes test failures on x86.
8829
8830 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8831
8832         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8833
8834         * cpu-x86.md: Same.
8835
8836         * mini-x86.c: Same.
8837
8838         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8839         for simd ctor values. 
8840
8841         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8842         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8843
8844 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8845
8846         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8847         LogicalRightShift.
8848
8849         * simd-instrincs.c: Same.
8850
8851         * basic-simd.cs: Same.
8852
8853 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8854
8855         * ratests.cs: Add more tests.
8856
8857         * regalloc2.c (add_spill_code): Handle more corner cases.
8858
8859 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8860
8861         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8862         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8863         both the source an destination of an instruction.
8864
8865 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8866
8867         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8868         wapihandles.c: more portability changes.
8869
8870 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8871
8872         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8873         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8874         safe to execute in a signal handler and the kernel provides better
8875         the info in /proc/self/smaps. Avoid the assert on sigaction during
8876         cleanup.
8877
8878 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8879
8880         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8881         do the bblock linking hack if it is actually needed.
8882
8883         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8884         up linking.
8885
8886         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8887         crash problem is fixed.
8888
8889         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8890         bblocks.
8891
8892         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8893         for catch clauses.
8894         (mini_method_compile): Set the starting value of next_vreg to 
8895         MAX_IREGS + MAX_FREGS when using globalra.
8896
8897         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8898         filter clauses with BB_EXCEPTION_HANDLER.
8899
8900         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8901
8902 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8903
8904         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8905         space for stdcall.  Fixes regressions on Win32.
8906
8907 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8908
8909         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8910         bblocks.
8911         (linear_scan): Remove an assert which doesn't seem to be needed.
8912
8913         * local-propagation.c (mono_local_deadce): Avoid a call to
8914         MONO_DELETE_INS which would screw up the instruction linking.
8915
8916         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8917
8918         * regalloc2.c: Upgrade to work the current JIT code.
8919
8920 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8921
8922         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8923         case.
8924
8925         * aot-runtime.c: Remove some dead code.
8926
8927         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8928         consistency.
8929         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8930
8931         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8932         trampolines using sscanf since atoi doesn't work on large unsigned values.
8933
8934         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8935         Initialize code_size.
8936
8937 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8938
8939         * method-to-ir.c (mini_emit_inst_for_method): Make
8940         Interlocked.CompareExchange work for Int arguments on 32 bit
8941         archs, as well.
8942
8943 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8944
8945         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8946
8947 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8948
8949         * main.c Fix MSVC build.
8950
8951         Contributed under MIT/X11 license.
8952
8953 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8954
8955         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8956         alignment larger than 8 bytes are aligned correctly, too.
8957
8958         * mini.c: Honor the min_align field of MonoClass when laying out
8959         the stack.
8960
8961 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8964
8965         * aot-compiler.c (emit_plt): Fix a warning.
8966         
8967         * aot-compiler.c: Implement ARM support in the binary writer.
8968
8969 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8970
8971         * basic-simd.cs: Add test for getter with byref arg.
8972         Fix the naming of a few tests.
8973         Add missing checks to a test.
8974
8975 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8976
8977         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8978
8979         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8980         most of the full-aot support for monitor enter/exit trampolines.
8981
8982         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8983         enter/exit trampoline creation functions.
8984
8985         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8986         make dist.
8987
8988 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8989
8990         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8991         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8992         implement the needed functionality without adding crap to the runtime.
8993
8994 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8995
8996         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8997         non-x86 builds.
8998
8999         * mini.c (mono_build_date): New global version holding the build date in
9000         string format.
9001         
9002         * Makefile.am (buildver.c): Generate a file containing the build date.
9003
9004         * main.c: Set the build date from the generated file.
9005
9006         * mini.c (mono_get_runtime_build_info): New helper function returning build
9007         information in a string format.
9008         
9009         * driver.c (mono_main): Print the build date in --version.
9010
9011         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9012         file when the bind-to-runtime-version option is used.
9013
9014 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9015
9016         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9017
9018 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9019
9020         * simd-methods.h: Rename prefetch methods.
9021
9022         * simd-intrinsics.c: Same.      
9023
9024 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9025
9026         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9027         sizes.
9028
9029 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9030
9031         * aot-compiler.c: Use the bundled elf header files instead of depending on
9032         the system one.
9033         
9034         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9035         mempool.
9036
9037         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9038         on every call.
9039
9040 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9041
9042         * cpu-x86.md: Add store nta ops.
9043
9044         * mini-ops.h: Same.
9045
9046         * mini-x86.c: Same.
9047
9048         * mini.h: Add an enum for simd prefetch modes.
9049
9050         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9051         of store. Use the changed code to support store nta.
9052
9053         * simd-intrinsics.c: Add prefetch ops for all vector types.
9054
9055 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9056
9057         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9058         threads.
9059         
9060         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9061         names.
9062
9063         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9064         trampolines.
9065
9066 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9067
9068         * mini-x86.c: Fixed commit.
9069
9070 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9071
9072         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9073
9074 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9075
9076         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9077         and MONITOR_EXIT, for the ASM fastpaths.
9078
9079         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9080         available.
9081
9082         * mini.c, patch-info.h: Signature and patch infos for
9083         Monitor.Enter/Exit trampolines.
9084
9085         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9086
9087         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9088         Monitor.Enter/Exit ASM fastpath for Linux.
9089
9090 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9091
9092         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9093
9094         * objects.cs: Add a new test.
9095         
9096         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9097
9098         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9099         if MONO_LOG_LEVEL is set.
9100
9101         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9102
9103         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9104
9105         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9106         
9107         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9108         of file offsets. Align the sections belonging to the data segment to 
9109         PAGESIZE.
9110
9111 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9112
9113         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9114         elf.h. Port it to amd64.
9115
9116 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9117
9118         * driver.c: Enable SIMD by default.
9119
9120 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9121
9122         * cpu-x86.md: Add prefetch op.
9123
9124         * mini-ops.h: Same.
9125
9126         * mini-x86.c: Same.
9127
9128         * mini.h: Add an enum for simd prefetch modes.
9129
9130         * simd-methods.h: Add prefetch function names.
9131
9132         * simd-intrinsics.c: Add prefetch ops for all vector types.
9133
9134 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9135
9136         * aot-compiler.c (emit_bytes): Speed this up a little.
9137
9138 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9139
9140         * aot-compiler.c: Add JIT time etc. statistics.
9141         
9142         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9143
9144         * mini.h (MonoCompile): Add 'got_offset' field.
9145
9146         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9147         method_got_offsets array.
9148
9149         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9150         wrappers.
9151
9152         * aot-compiler.c (compile_method): Add generic method instances referenced
9153         by the method to the list of methods to be compiled, this is required so if
9154         A<T> references B<T>, and another assembly references A<int>, then it will
9155         also get a copy of B<int>.
9156
9157         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9158         when checking for monitor enter/exit.
9159
9160 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9161
9162         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9163         for Monitor.Enter and Monitor.Exit if enabled.
9164
9165         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9166         Solaris.
9167
9168 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9169
9170         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9171         of an OP_MOVE. Fixes #440046.
9172
9173         * basic-long.cs: Add a new test.
9174
9175 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9176
9177         * mini.h: Add synchronization note for the managed counter-part.
9178
9179         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9180         returns the simd caps of the current cpu.
9181
9182 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9183
9184         * basic-simd.cs: Remove Console.WriteLine.
9185
9186 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9187
9188         * basic-simd.cs: New tests for Vector2ul.
9189
9190 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9191
9192         * simd-intrinsics.c: Add new vector type Vector2ul.
9193
9194 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9195
9196         * basic-simd.cs: New tests for Vector2l.
9197
9198 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9199
9200         * cpu-x86.md: Add long version of most packed int ops.
9201
9202         * mini-ops.h: Same.
9203
9204         * mini-x86.h: Same.
9205
9206         * simd-intrinsics.c: Add new vector type Vector2l.
9207
9208 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9209
9210         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9211
9212         * simd-methods.h: Remove SN_op_BitwiseXor.
9213
9214 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9215
9216         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9217         alignment.
9218
9219 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9220
9221         * basic-simd.cs: Test for Vector2d.
9222
9223         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9224         value.
9225
9226 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9227
9228         * cpu-x86.md: Add double version of all packed float ops.
9229
9230         * mini-ops.h: Same.
9231
9232         * mini-x86.h: Same.
9233
9234         * simd-intrinsics.c: Add new vector type Vector2d.
9235
9236         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9237
9238         * simd-methods.h: Add Duplicate.
9239
9240 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9241
9242         * basic-simd.cs: Test for packing with signed saturation.
9243
9244 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9245
9246         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9247         found in the TYPESPEC table.
9248
9249 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9250
9251         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9252         too.
9253
9254         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9255
9256         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9257         instead of the RVA, since the RVA can be changed by tools like the cil 
9258         stripper.
9259
9260         * method-to-ir.c (mono_method_to_ir2): Ditto.
9261
9262         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9263         (deserialize_variable): Ditto.
9264
9265 2008-10-25  Martin Baulig  <martin@ximian.com>
9266
9267         * debug-mini.c (write_variable): Use
9268         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9269
9270 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9271
9272         * cpu-x86.md: Add unsigned variants of packd and packw.
9273
9274         * mini-ops.h: Same.
9275
9276         * mini-x86.h: Emit the right instruction for packd and packw.
9277         Add unsigned variants of packd and packw.
9278
9279         * simd-intrinsics.c: Packd and packw were used in place of their
9280         unsigned variants. Change that.
9281         Add intrinsics for (Signed)PackWithSignedSaturation.
9282
9283         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9284
9285 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9286
9287         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9288
9289 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9290
9291         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9292
9293         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9294
9295         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9296         sse instructions.
9297
9298         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9299
9300 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9301
9302         * method-to-ir.c, mini.c: Special casing for the synchronized
9303         wrapper for the ldtoken+GetTypeFromHandle case.
9304
9305 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9306
9307         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9308
9309         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9310         created/split bblocks.
9311
9312 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9313
9314         * mini-ops.h: Add packed signed mul high.
9315         
9316         * cpu-x86.md: Same.
9317
9318         * mini-x86.c (mono_arch_output_basic_block): Same.
9319
9320         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9321
9322         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9323
9324 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9325
9326         * basic-simd.cs: Tests for Vector16sb.
9327
9328 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9329
9330         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9331
9332 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9333
9334         * mini-ops.h: Add packed signed min, max and compare greater.
9335         
9336         * cpu-x86.md: Same.
9337
9338         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9339         saturation.
9340
9341         * simd-methods.h: Add CompareGreaterThan.
9342
9343         * simd-methods.h: Remove CompareEquals.
9344
9345         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9346
9347         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9348
9349         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9350         CompareEqual.
9351
9352 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9353
9354         * basic-simd.cs: Fix tests due to change in the API.
9355
9356 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9357
9358         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9359
9360 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9361
9362         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9363
9364         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9365         inst_offset as this has invalid values for LDADDR.
9366
9367 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9368
9369         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9370
9371         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9372
9373 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9374
9375         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9376         for accessing field->data.
9377
9378 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9379
9380         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9381
9382 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9383
9384         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9385
9386         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9387
9388 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9389
9390         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9391         from the cfg mempool.
9392
9393 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9394
9395         * basic-simd.cs: Tests for new methods in Vector8us.
9396
9397 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9398
9399         * mini-ops.h: Add multiply and store high.
9400         
9401         * cpu-x86.md: Same.
9402
9403         * mini-x86.c (mono_arch_output_basic_block): Same.
9404
9405         * simd-methods.h: Same.
9406
9407         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9408         and CompareEqual.
9409
9410 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9413         mono_class_setup_vtable ().
9414
9415         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9416         mono_class_get_vtable_entry () for accessing klass->vtable.
9417
9418         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9419
9420         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9421         found.
9422
9423         * method-to-ir.c (mono_save_token_info): Don't save references made from
9424         wrappers.
9425
9426         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9427         of generic instances.
9428
9429         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9430
9431 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9432
9433         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9434         OP_JMP depends on the method signature.  Calculate it properly.
9435
9436 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9437         
9438         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9439         called directly.
9440
9441         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9442         instances.
9443         (emit_extra_methods): Add another table mapping method indexes to 
9444         offsets in the extra_method_info table.
9445
9446         * mini.h: Bump AOT file format version.
9447         
9448         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9449         and mono_aot_get_method_from_token () into one function.
9450
9451 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9452
9453         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9454         separate counter.
9455
9456 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9457
9458         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9459         methods.
9460
9461         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9462         disable_aot.
9463
9464         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9465
9466         * mini.h: Bump aot file format version.
9467
9468         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9469         AOT file can contain native code for methods which are not in the METHOD
9470         table. Generate code for non-sharable generic instances of generic methods
9471         found in the METHODSPEC table.
9472         
9473         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9474         encoding generic type handles.
9475
9476         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9477         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9478
9479         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9480         macros + MONO_ADD_INS.
9481
9482         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9483         context as well.
9484
9485         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9486
9487         * mini.h: Bump aot file format version.
9488
9489         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9490
9491 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9492
9493         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9494         platforms, with definable stack alignment value.  Set to 16 now
9495         for all platforms.
9496
9497         * mini.c, mini.h, driver.c: Command line option for disabling
9498         stack alignment.
9499
9500 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9501
9502         * basic-simd.cs: Tests for new methods in Vector4ui.
9503
9504 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9505
9506         * mini-ops.h: Add packed int shuffle.
9507         
9508         * cpu-x86.md: Same.
9509
9510         * mini-x86.c (mono_arch_output_basic_block): Same.
9511
9512         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9513         extract mask, max, min, shuffle.
9514
9515         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9516
9517 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9518
9519         * basic-simd.cs: Tests for new methods in Vector8us.
9520
9521 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9522
9523         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9524         RuntimeTypeHandle, not a TypedReference.
9525
9526 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9527
9528         * simd-intrinsics.c: remove relocations.
9529
9530 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9531
9532         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9533         optimizations from the x86 backend.
9534
9535 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9536
9537         * simd-methods.h, simd-intrinsics.c: debloat method names and
9538         prepare for no relocations.
9539
9540 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9541
9542         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9543         
9544         * cpu-x86.md: Same.
9545
9546         * mini-x86.c (mono_arch_output_basic_block): Same.
9547
9548         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9549         extract mask, max, min and sum of absolute differences.
9550
9551         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9552         method name.
9553
9554 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9555
9556         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9557         Renamed one test for consistency.
9558
9559 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9560
9561         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9562         fix to the code that deal with other blocks.
9563
9564 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9565
9566         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9567
9568 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9569
9570         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9571         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9572         able to process the source reg.
9573
9574 2008-10-16  Martin Baulig  <martin@ximian.com>
9575
9576         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9577
9578         * inssel.brg: Add `OP_HARD_NOP'.
9579
9580         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9581
9582         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9583         `OP_HARD_NOP' instruction when running inside the debugger.
9584
9585         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9586         `OP_HARD_NOP' instruction when running inside the debugger.
9587
9588 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9589
9590         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9591         now works. The issue with the regalloc tripping up no longer
9592         happens.
9593
9594         * simd-intrinsics.c (load_simd_vreg): Same.
9595
9596 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9597         
9598         * basic-simd.cs: Tests for new Vector8ui methods.
9599
9600 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9601
9602         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9603         only for type. This fixes crashes where MonoInst::klass is checked
9604         for ops of type != VTYPE or OBJ.
9605
9606         * simd-intrinsics.c (load_simd_vreg): Same.
9607
9608 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9609
9610         * mini-ops.h: Add ops for packed shuffle/max/avg and
9611         extract mask.
9612         
9613         * cpu-x86.md: Same.
9614
9615         * mini-x86.c (mono_arch_output_basic_block): Same.
9616
9617         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9618         extract mask.
9619
9620         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9621         to emit extract mask op.
9622
9623         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9624         to emit word shuffles.
9625
9626 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9627
9628         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9629         the largest alignment needed by a variable, but at least
9630         sizeof(gpointer).
9631
9632 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9633
9634         * basic-simd.cs: Tests for the fixes in the last commit.
9635
9636 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9637
9638         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9639         no longer handles STACK_PTR input.
9640
9641         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9642
9643         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9644         get_simd_vreg   but handles STACK_PTR input.
9645
9646         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9647         as the input can be an arbitrary pointer.
9648
9649         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9650         LDADDR local optimization directly otherwise use a store op.
9651
9652 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9653
9654         * basic-simd.cs: Tests for dup low and dup high.
9655
9656 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9657
9658         * mini-ops.h: Add dup low and dup high ops.
9659         
9660         * cpu-x86.md: Same.
9661
9662         * mini-x86.c (mono_arch_output_basic_block): Same.
9663
9664         * simd-intrinsics.c (vector4f_intrinsics): Same.
9665
9666 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9667
9668         * basic-simd.cs: Tests for recently added functionality.
9669
9670 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9671
9672         * mini-ops.h: Add remaining sse1 fp ops.
9673         
9674         * cpu-x86.md: Add remaining sse1 fp ops.
9675
9676         * mini-x86.c (mono_arch_output_basic_block): Same.
9677
9678         * mini.h: Add enum for simd FP compare conditions.
9679
9680         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9681
9682         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9683         so the backed can generate the appropriate op.
9684
9685 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9686         This patch squeese one more byte from the SimdIntrinsc struct.
9687
9688         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9689         a a shift amount intead of simply or'ing it.
9690
9691         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9692
9693         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9694         byte so we can have an aditional flags field without increasing struct size.
9695
9696         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9697         against the simd_supported_versions bitmask.
9698
9699         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9700
9701 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9702
9703         * mini.c: remove rawbuffer code (the only use here is unsafe because
9704         it takes locks during signal handling and the kernel now provides much
9705         better info in proc/pid/smaps these days).
9706
9707 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9710         OP_X86_PUSH_OBJ. Fixes #434620.
9711
9712         * objects.cs: Add a test.
9713         
9714 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9715
9716         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9717         that the packuswb/packusdw don't work with unsigned numbers for what
9718         would be negative numbers in signed format.
9719
9720         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9721         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9722
9723         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9724
9725         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9726
9727         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9728
9729         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9730
9731         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9732         add more ops.
9733
9734         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9735         version as the enum in mini.h.
9736
9737         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9738         for sse3 ops, check the simd_version field if present. This way the code
9739         works with all versions of sse.
9740
9741 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9742
9743         * simd-intrinsics.c: Fixed intrinsic name typo.
9744
9745         * mini.h: Added missing simd exported function.
9746
9747         * basic-simd.cs: Added tests for Vector4ui.
9748         Fixed broken test for Vector16b.
9749
9750 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9751
9752         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9753         the max length to 64.
9754
9755 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9756
9757         * method-to-ir.c: Only do the fast virtual generic method call for
9758         non-wrapper methods.
9759
9760         * mini.h, mini-trampolines.c: The new generic virtual remoting
9761         trampoline handles virtual method calls via the vtable (as done by
9762         the fast virtual generic method calls) to remoting proxies.
9763
9764         * mini.c (mono_jit_create_remoting_trampoline): For generic
9765         methods reate a generic virtual remoting trampoline.
9766
9767         * mini-amd64.h: Enable fast virtual generic method calls again.
9768
9769 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9770
9771         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9772         restore registers when doing tail calls.
9773
9774 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9775
9776         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9777         Vector4ui.
9778
9779 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9780
9781         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9782
9783 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9784
9785         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9786
9787 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9788
9789         * basic-simd.cs: Retrofit for API changes.
9790
9791 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9792
9793         * mini-ppc.c: Handle integer stack arguments for tail calls.
9794
9795 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9796
9797         * optflags-def.h: Removed sse3 optimization.
9798
9799         * driver.c: Same.
9800
9801         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9802         sse3.
9803
9804         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9805
9806         * mini.h: Added enumeration with simd versions.
9807
9808         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9809         for detecting SSE3.
9810
9811         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9812
9813         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9814
9815 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9816
9817         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9818
9819         * basic-simd.cs: Fixed test naming.
9820
9821 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9822
9823         * mini-ops.h: Added ops for packed and saturated math, shifts
9824         and packing/unpacking.
9825
9826         * cpu-x86.md: Added descriptors for the above ops.
9827
9828         * mini-x86.c: Added code to emmit the above ops.
9829
9830         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9831
9832 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9833
9834         * aot-compiler.c (compile_method): Enable AOT for generic code.
9835
9836         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9837
9838 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9839
9840         * mini.c: add a workaround for a common screwup that ends up blamed
9841         to mono (other processes blocking signal delivery).
9842
9843 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9844
9845         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9846         in the LDFLD/STFLD opcodes. Fixes #432673.
9847
9848         * iltests.il.in: Add a new test.
9849
9850 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9851
9852         * mini-arm.c: attach the thread in unmanaged->managed transitions
9853         using delegates (bug #433148).
9854
9855 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9856
9857        * basic-simd.cs: Use new ShuffleSel constants.
9858
9859 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9860
9861         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9862
9863         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9864         only disable simd intrinsics if no sse2 is detected.
9865
9866         * optflags-def.h: Added sse3.
9867
9868         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9869         is disabled.
9870
9871 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9872
9873         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9874         when adding delegate-invoke wrappers.
9875
9876 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9877
9878         * Makefile.am: Reenable the simd tests.
9879
9880 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9881
9882         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9883           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9884           other vreg is allocated to that hreg.
9885
9886         Contributed under MIT/X11 license.
9887
9888 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9891         yet checked in.
9892
9893 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9894
9895         * basic-simd.cs: New test suite for SIMD intrinsics.
9896
9897         * Makefile.am: Added new tests.
9898
9899 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9900
9901         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9902
9903         * mini-ops.h: Same.
9904
9905         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9906
9907         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9908         using SSE2 aware opcodes.
9909
9910         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9911         is enabled, this code path is only reachable if conversion ops are emmited after
9912         mono_method_to_ir.
9913
9914         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9915
9916         This optimization saves 6 bytes per conversion against the old version.
9917
9918 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9919
9920         * aot-compiler.c (compile_method): Don't skip methods referencing 
9921         generic methods without a corresponding entry in token_info_hash, since
9922         encode_method_ref () can handle all generic methods now.
9923
9924         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9925         generic context is set.
9926         
9927         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9928         generic sharing of LDTOKEN.
9929
9930 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9931
9932         * mini-amd64.h: Temporarily disabled fast virtual generic method
9933         calls because it breaks the System.Runtime.Remoting tests.
9934
9935 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9936
9937         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9938
9939         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9940         so inlining actually works.
9941         (check_inline_caller_method_name_limit): Ditto.
9942
9943 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9944
9945         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9946         64 bit safety (from Olaf Hering and Andreas Farber).
9947
9948 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9949         
9950         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9951         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9952         unused virtual call support code.
9953
9954         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9955         
9956         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9957         which can't use aot trampolines.
9958         (decode_patch): Don't create aot trampolines for methods which can't use
9959         them.
9960
9961         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9962         use aot trampolines.
9963
9964         * mini.h: Bump AOT image format version.
9965         
9966 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9967
9968         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9969         to save_token_info () since cmethod is inflated for constrained calls.
9970
9971         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9972
9973 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9974
9975         * Makefile.am: Add build rules for ppc64.
9976         This avoids the build failing at pedump with unresolved symbols
9977         due to lack of arch_sources. Instead it will now fail earlier
9978         due to lack of cpu-ppc64.md.
9979
9980         Contributed under MIT/X11 license.
9981
9982 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9983
9984         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9985         tail calls.
9986
9987         * iltests.il.in: Add test case for tail call with many arguments.
9988
9989 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9990
9991         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9992         to the fast virtual generic method code until the aot case is fixed.
9993
9994 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9995
9996         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9997
9998 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9999
10000         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10001         thunks.
10002
10003 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10004         
10005         * simd-intrinsics.c: Forgot to add this one.
10006
10007         * mini-codegen.c: Fix macro in case SIMD is not supported.
10008
10009 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10010         
10011         This patch land initial JIT support for simd intrinsics.
10012
10013         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10014
10015         * Makefile.am: Added simd-intrinsics.c
10016
10017         * simd-intrinsics.c: New file with simd instrinsic related
10018         code.
10019
10020         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10021
10022         * cpu-x86.md: Add simd related instructions.
10023
10024         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10025
10026         * driver.c: Added two new --regression variants.
10027
10028         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10029
10030         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10031
10032         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10033         extract some complicated logic to helper functions.
10034
10035         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10036
10037         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10038
10039         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10040         the specialized simplification pass.
10041
10042         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10043
10044         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10045
10046         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10047         table.
10048
10049         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10050         if MONO_ARCH_NEED_SIMD_BANK is defined.
10051
10052         * mini-ops.h: Added the new simd ops.
10053
10054         * mini-x86.c: Added mono_arch_xregname.
10055
10056         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10057
10058         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10059
10060         * mini-x86.h: Define simd related MONO_ARCH macros.
10061
10062         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10063
10064         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10065
10066         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10067         MONO_CLASS_IS_SIMD to deal with simd related IR.
10068
10069         * mini.h (MonoInst): Added spill_var to the backend union.
10070
10071         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10072
10073         * mini.h: Added forward declarations of the new simd fuctions.
10074
10075         * optflags-def.h: Added new optimization names SIMD.
10076
10077         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10078
10079         * regalloc.h: Added support for working with 3 register banks.
10080
10081         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10082
10083         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10084
10085 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10086
10087         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10088
10089 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10090
10091         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10092         instead of one on 64 bit systems.
10093
10094         * method-to-ir.c: Remove unused includes.
10095
10096 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10097
10098         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10099         cfg->used_int_regs, since the two are different on arm.
10100
10101 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10102
10103         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10104         mono_method_get_vtable_index() to get the vtable index.
10105
10106 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10107
10108         * method-to-ir.c (mono_method_to_ir2): Don't create native
10109         wrappers for array methods, because they're never called (and if
10110         they were called they wouldn't work).
10111
10112 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10113
10114         * method-to-ir.c (mono_method_to_ir2): Array methods are
10115         special-cased and must not be invoked indirectly via the (M)RGCTX
10116         when generic sharing is turned on.  Fixes #431413.
10117
10118 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10119
10120         * method-to-ir.c: When generic sharing is active, call
10121         non-interface virtual generic methods via the standard trampoline.
10122
10123         * mini-trampolines.c: Handle virtual generic shared methods.
10124
10125         * mini.h, mini-x86.c, mini-x86.h: New argument for
10126         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10127         method thunks and which is the trampoline to call if the lookup
10128         fails.  Enable the virtual generic method thunk for x86.
10129
10130         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10131         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10132         argument but assert that it's NULL, because these archs don't yet
10133         implement the virtual generic method thunk.  Changes in the IMT
10134         thunk data structures.
10135
10136 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10137
10138         * aot-compiler.c (emit_globals): Avoid invalid characters in
10139         the static linking symbol.
10140
10141         * objects.cs: Add a test for the range check optimization. Fix warnings.
10142
10143         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10144         optimization from the current JIT.
10145
10146         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10147         later in decompose_array_access_opts () to allow more optimizations.
10148
10149         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10150         mono_decompose_soft_float () for consistency.
10151
10152         * mini-ops.h: Fix arguments of OP_STRLEN.
10153
10154         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10155         into a separate function.
10156         (reset_cast_details): Ditto.
10157         (handle_unbox): Save cast details. Fixes #431254.
10158
10159         * method-to-ir.c: Remove some obsolete FIXMEs.
10160
10161 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10162
10163         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10164
10165 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10166
10167         * mini-codegen.c: More work on macros to make them
10168         ready for multiple regbanks.
10169
10170 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10171
10172         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10173
10174         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10175
10176 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10177
10178         * mini-codegen.c (mono_spillvar_offset): Proper support for
10179         multiple regbanks.
10180
10181 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10182
10183         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10184         the stack overflow changes.
10185
10186 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10187
10188         * mini-codegen.c: Make all bank macros depend on reg_bank.
10189
10190         * mini-codegen.c (mono_local_regalloc): Make free mask
10191         initialization regbank aware.
10192
10193 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10194
10195         * mini-codegen.c (mono_local_regalloc): Extract callee
10196         mask selection to a function and make it regbank aware.
10197
10198 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10199
10200         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10201         code to deal with many regbanks.
10202
10203 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10204
10205         * mini-codegen.c: More fp->regbank changes.
10206
10207 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10208
10209         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10210         of a hardcoded constant.
10211
10212 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10213
10214         * method-to-ir.c (type_from_stack_type): Fix typo.
10215
10216 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10217
10218         * mini-ia64.c (emit_move_return_value): Convert float return values to
10219         double.
10220
10221         * objects.cs: Add a new test.
10222         
10223         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10224         VARARG methods to fix an assert later.
10225
10226         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10227         end so it at least compiles.
10228
10229 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10230
10231         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10232
10233 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10234
10235         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10236         optimization to a new function (emit_optimized_ldloca_ir) and enable
10237         it for both ldloca and ldloca_s.
10238
10239 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10240
10241         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10242         gshared CASTCLASS code.
10243
10244         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10245         amd64, where the libc stack unwinder encounters stack frames referring to
10246         native code in unmapped memory.
10247
10248         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10249         sharing.
10250
10251         * generics.cs: Add new test.
10252
10253 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10254
10255         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10256         add a check that one of the ARM_FPU_ constants is defined.
10257
10258         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10259         
10260         * mini-exceptions.c: Fix build on non-altstack platforms.
10261
10262         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10263         sharing of vtypes.
10264
10265         * ir-emit.h: Add a comment to NEW_PCONST.
10266
10267         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10268
10269         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10270
10271         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10272         after the changes to MonoJitDomainInfo.
10273
10274 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10275
10276         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10277
10278 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10279
10280         * mini-ppc.c: Compiler warning fixes.
10281
10282 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10283
10284         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10285         for pinvokes.
10286
10287 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10288
10289         * exceptions-ppc.c, mini-ppc.h: Compile
10290         mono_arch_handle_altstack_exception() on Darwin, too.
10291
10292 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10293
10294         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10295         work on archs which don't have generic sharing implemented, only
10296         without the vtable_arg.
10297
10298 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10299
10300         * mini.c: Added comment explaining why delegate ctor icall
10301         wrappers are compiled.
10302
10303 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10304
10305         * mini.c: Don't produce trampolines to delegate ctor icall
10306         wrappers but compile them upfront.
10307
10308 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10309
10310         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10311         runtime-set function when going back to managed code. Currently this
10312         is used to set back the protection on the soft ovf pages and/or to
10313         throw the stack overflow exception that happened in unmanaged code.
10314
10315 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10316
10317         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10318         runtime-set function when going back to managed code. Currently this
10319         is used to set back the protection on the soft ovf pages and/or to
10320         throw the stack overflow exception that happened in unmanaged code.
10321
10322 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10323
10324         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10325         the support code for restoring stack protection after stack overflows
10326         that happen in unmanaged code. Don't set the exec permission on the
10327         soft overflow area.
10328
10329 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10330
10331         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10332         delegate->method_ptr is set. Fixes #428054.
10333
10334 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10335
10336         * tests.cs: Rename to ratests.cs.
10337
10338         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10339         emit_get_rgctx_... functions.
10340
10341 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10342
10343         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10344
10345 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10346
10347         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10348         before asserting that method is sharable.
10349
10350 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10351
10352         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10353         whether method needs a static RGCTX wrapper used instead of
10354         complex conditions.
10355
10356         * generic-sharing.c, mini.h: A few functions moved to
10357         metadata/generic-sharing.c.
10358
10359 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10360
10361         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10362         Generic code sharing for value types, which essentially means
10363         treating value type methods like static methods.  The RGCTX is
10364         passed in the same way.
10365
10366 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10367
10368         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10369         opcode when creating multi-dimensional arrays of open types.
10370
10371         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10372         open generic types.
10373
10374         * generics.cs: Add a test.
10375
10376         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10377
10378 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10381
10382         * mini.c (mini_method_compile): Set it when running under the debugger. 
10383
10384         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10385         vreg optimization if the flag is set.
10386
10387         * driver.c (mono_main): Add --attach= option to pass options to
10388         the attach agent.
10389
10390         * mini.c (sigquit_signal_handler): Start the attach agent.
10391
10392         * ssapre.c: Disable this to save space since it is not yet ported to
10393         linear IR.
10394
10395         * regalloc2.c: Disable this to save space.
10396
10397         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10398
10399 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10400
10401         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10402         the -v option useful again.
10403
10404 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10405
10406         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10407         --break-at-bb.
10408
10409         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10410         arrays of arrays. Fixes #428406.
10411
10412         * method-to-ir.c (mini_emit_castclass): Ditto.
10413
10414         * objects.cs: Add new test.
10415         
10416 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10417
10418         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10419         was wrong at it choked against target_type_is_incompatible for byref types.
10420
10421 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10424         places.
10425
10426 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10427
10428         * mini-exceptions.c: update a few more exceptions-related counters.
10429
10430 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10431
10432         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10433         new functions to allocate from persistent mempools.
10434
10435 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10436
10437         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10438         multiple register banks in the future.
10439
10440         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10441
10442 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10443
10444         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10445
10446         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10447
10448         * mini.h: Export type_to_eval_stack_type.
10449
10450         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10451         is only ins->klass of byref types.
10452
10453 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10456         (mini_emit_memcpy2): Ditto.
10457
10458         * mini-amd64.c: Fix a warning.
10459
10460 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10461
10462         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10463         linking.
10464
10465 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10466
10467         * method-to-ir.c: Extract stloc micro-optimization to a
10468         function and apply it to all cases.
10469
10470 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10471
10472         * method-to-ir.c: Don't fail generic code sharing in cases we
10473         already support.
10474
10475 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10476
10477         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10478
10479 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10480
10481         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10482         implementation.
10483
10484 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10485
10486         * trace.c: make tracing more useful and correct, with per-thread
10487         id and indent info.
10488
10489 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10490
10491         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10492         doing a method call and the argument is an R4.
10493
10494 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10495
10496         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10497         generic methods.
10498
10499 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10500
10501         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10502
10503 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10504
10505         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10506         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10507
10508 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10509
10510         * driver.c: Add a --agent argument (not supported yet) to load managed
10511         agent assemblies before loading the main assembly, similarly to how the
10512         Java VM handles agents.
10513
10514 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10515
10516         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10517         function to do stack layout of local variables.
10518
10519 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10520
10521         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10522         calculation.
10523
10524 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10525
10526         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10527         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10528         JIT if DISABLE_JIT is defined.
10529
10530         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10531         defined.
10532
10533 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10534
10535         * iltests.il.in: Disable the fconv test on PPC (the result is
10536         undefined according to ECMA).
10537
10538 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10539
10540         * iltests.il.in: Enable tail call tests for PPC.
10541
10542         * mini.h: Add variable for storing incoming valuetype argument
10543         addresses for tail calls.
10544
10545         * mini-ppc.c: Implement valuetype arguments and return values for
10546         tailcalls on Linux.
10547
10548 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10549
10550         * mini-ppc.c: Partially implement tail calls (struct arguments and
10551         return values not supported).
10552
10553         * method-to-ir.c: Enable tail calls on PPC.
10554
10555 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10556
10557         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10558         runtime-invoke wrappers to work around the problem of them getting
10559         assigned to a random class.
10560
10561         * aot-runtime.c (mono_aot_get_method): Ditto.
10562         
10563 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10564
10565         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10566         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10567
10568 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10569
10570         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10571         until they're implemented properly.
10572
10573         * exceptions-ppc.c: Use arch-independent exception-handling code
10574         instead of custom one.
10575
10576         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10577         for Linear IR.
10578
10579         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10580
10581         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10582         applies when __powerpc__ is defined.
10583
10584 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10585
10586         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10587         methods to their code to avoid computing the full name of wrappers and
10588         doing a lookup in a string hash table.
10589
10590 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10591
10592         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10593         we identify bblocks before method_to_ir () is ran.
10594
10595         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10596         Also avoid optimizing branches pointing to themselves.
10597
10598         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10599
10600 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10601
10602         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10603
10604 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10605
10606         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10607         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10608         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10609         'buf'.
10610
10611         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10612         jumped to the same entry in plt_jump_table.
10613
10614 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10615
10616         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10617         dynamic images.
10618
10619 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10620
10621         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10622         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10623         #421807.
10624
10625 2008-08-29  Geoff Norton  <gnorton@novell.com>
10626
10627         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10628         segment, and doesn't properly handle .space as .text.  Fixes
10629         AOT Mach/ARM
10630
10631 2008-08-29  Geoff Norton  <gnorton@novell.com>
10632
10633         * mini.c: Disable the mach exception handler when running on 
10634         ARM
10635
10636 2008-08-29  Geoff Norton  <gnorton@novell.com>
10637
10638         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10639         globals on Darwin/ARM
10640
10641 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10642
10643         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10644         since too many things depend on it. Instead, call 
10645         mono_runtime_set_no_exec ().
10646         
10647         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10648         the new JIT.
10649
10650         * aot-compiler.c: Add an 'asm-only' AOT option.
10651
10652         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10653                 
10654         * aot-compiler.c (compile_method): Disable gshared support for now as it
10655         doesn't yet work.
10656
10657 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10658
10659         * mini-amd64.h : Fix a compiler warning.
10660
10661         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10662           Changed to use a callback function to retrieve the unwind info.
10663           This avoids problems observed when code blocks were removed by
10664           unloading an app domain.
10665
10666         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10667           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10668           to work properly.
10669
10670         Contributed under MIT/X11 license.
10671
10672 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10673
10674         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10675           case to keep the stack aligned to 8.
10676
10677         Contributed under MIT/X11 license.
10678
10679 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10682         avoid repeated linear searches.
10683
10684 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10685
10686         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10687         methods it can't handle.
10688         
10689         * aot-compiler.c (add_method): Avoid adding a method twice.
10690         (add_wrappers): Add runtime invoke wrappers for all methods.
10691
10692         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10693         function to create an aot-compatible version of this trampoline.
10694
10695         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10696
10697 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10698
10699         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10700
10701         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10702         with a generic sharing failure.
10703
10704         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10705
10706         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10707         CEE_RETHROW. Fixes #419634.
10708
10709         * mini.c (mono_method_to_ir): Ditto.
10710
10711         * exceptions.cs: Add a new test.
10712         
10713         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10714         to mono_type_stack_size_internal () since some callers might not pass in
10715         an rgctx.
10716
10717         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10718         instrument_prolog. Fixes #419878.
10719
10720         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10721         doubles in soft float mode volatile.
10722
10723 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10726
10727         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10728         to handle soft float correctly.
10729
10730         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10731         the fast path.
10732
10733         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10734
10735         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10736         to sp, since the generics catch code requires it.
10737
10738         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10739         copying.
10740
10741         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10742         mono_arch_emit_imt_argument ().
10743
10744         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10745
10746         * mini-arm.c tramp-arm.c: Generic sharing updates.
10747
10748 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10749
10750         * mini-arm.c: Fix the arm build.
10751
10752         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10753         handling enums, generic instances and generic sharing.
10754         (mini_type_stack_size_full): Ditto.
10755
10756         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10757         
10758         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10759
10760         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10761
10762         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10763         trampolines.
10764
10765         * mini-arm.c: Various small generic sharing changes.
10766
10767         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10768         this for x86.
10769         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10770         custom code.
10771
10772         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10773         helper function to return a generic class init trampoline.
10774
10775         * method-to-ir.c mini.c: Use it.
10776         
10777         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10778         arch-specfic function to return a generic class init trampoline.
10779
10780         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10781         the GENERIC_CLASS_INIT custom code.
10782
10783         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10784         a fatal error, not a sharing failure.
10785
10786         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10787         needed.
10788
10789         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10790         trampoline argument from MONO_ARCH_VTABLE_REG.
10791
10792         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10793         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10794         argument, and pass the vtable in VTABLE_REG.
10795
10796         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10797         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10798         argument, and pass the vtable in VTABLE_REG.
10799         (mono_arch_create_trampoline_code_full): Remove some special casing for
10800         the rgctx fetch trampoline.
10801
10802         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10803         Fixes #419273.
10804
10805         * iltests.il: Add a test for it.
10806
10807 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10808
10809         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10810
10811         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10812         no longer needed.
10813
10814         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10815         use mono_jit_info_table_find () to avoid recursion.
10816         (mono_delegate_trampoline): Add a sync wrapper here.
10817
10818         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10819         here.
10820
10821         * mini.c (mono_method_to_ir): Ditto.
10822         
10823         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10824         add_sync_wrapper argument. Don't add a sync wrapper here.
10825         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10826
10827         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10828         
10829 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10830
10831         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10832           of nonvolatile registers back from MonoContext to CONTEXT.
10833
10834         Contributed under MIT/X11 license.
10835
10836 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10837
10838         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10839           arguments on Winx64 there are only 4 argument registers.  For this
10840           logic to work the last argument must be pulled from the stack.  
10841
10842         Contributed under MIT/X11 license.
10843
10844 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10847
10848         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10849         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10850         encode/decode_method_ref ().
10851
10852         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10853
10854         * aot-runtime.c (decode_patch): Ditto.  
10855
10856         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10857         MONO_PATCH_INFO_METHOD.
10858
10859         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10860         MonoGenericJitInfo.
10861
10862         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10863         MonoGenericJitInfo.
10864
10865         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10866
10867         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10868         one from the caller.
10869
10870         * aot-runtime.c (decode_generic_inst): New function to decode and
10871         return a interned generic inst.
10872         (decode_klass_ref): Use it.
10873         (decode_method_ref): Ditto.
10874
10875         * aot-compiler.c (emit_exception_debug_info): Save 
10876         jinfo->has_generic_jit_info too.
10877
10878 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10879
10880         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10881
10882         * iltests.il.in: Add a test for fconv_to_i.
10883
10884         * liveness.c: Disable the liveness2 pass for now to save space.
10885
10886         * regalloc2.c: Include mempool-internals.h to fix warnings.
10887
10888         * aot-compiler.c (encode_method_ref): Encode the context of generic
10889         instance methods.
10890
10891         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10892         the context saved in the aot file.
10893
10894         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10895
10896         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10897
10898         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10899         volatile so they won't be optimized away.
10900
10901 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10902
10903         * ssa.c:
10904         * ssa2.c:
10905         * mini.c:
10906         * regalloc2.c:
10907         * dominators.c: Remove duplicated functions that now are in
10908         mempool-internals.h.
10909
10910 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10911
10912         * aot-compiler.c: Fix warnings.
10913
10914         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10915
10916         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10917
10918         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10919         as the patch type.
10920
10921         * mini.c (mono_resolve_patch_target): Ditto.
10922         
10923         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10924         (encode_klass_ref): Add support for encoding VARs/MVARs.
10925
10926         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10927
10928         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10929         the handling of the got entries into a separate 'decode_got_entry' function.
10930         Add support for RGCTX_FETCH.
10931
10932         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10933         clobbered by the trampoline code.
10934
10935         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10936         not clobbered by the indirect calling code.
10937
10938 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10939
10940         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10941         to fix the build.
10942
10943 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10944
10945         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10946         signature using the compilation mempool otherwise we would leak it.
10947
10948 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10951         mono_emit_abs_call ().
10952
10953         * patch-info.h: Add GENERIC_CLASS_INIT.
10954
10955         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10956
10957         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10958         as their target as a near call.
10959
10960         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10961         ABS handling code.
10962         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10963
10964         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10965         call to a runtime function described by a patch.
10966
10967         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10968         mono_emit_abs_call, this has the advantage that the ABS handling code in
10969         mono_codegen () can handle them both, and can handle other stuff in the
10970         future without additional code.
10971
10972         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10973         entry.
10974         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10975         abs addresses.
10976
10977         * mini.h: Add missing bblock related prototypes.
10978
10979         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10980         reverse_inst_list_len fields.
10981
10982         * mini.c: Refactor this file a bit by moving branch optimizations to 
10983         branch-opts.c.
10984
10985         * method-to-ir.c: Merge generic sharing changes missed earlier.
10986
10987         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10988
10989         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10990         shared patches. Process METHODCONST as a shared patch.
10991
10992         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10993         as it crashes on the 2.0 mscorlib.
10994
10995         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10996         to cause crashes.
10997         
10998         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10999         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11000         by IMT.
11001
11002         * aot-compiler.c: Reorganize the got handling code to be a bit more
11003         understandable.
11004
11005 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11006
11007         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11008         mono_patch_info_equals/hash, and use it to massively simplify
11009         get_plt_index ().
11010
11011         * mini.c (mono_patch_info_hash): Simplify this and add support for
11012         more patch types.
11013
11014         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11015
11016         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11017         handling code, since an offset is not enough to identify a trampoline.
11018
11019         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11020
11021 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11022
11023         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11024
11025         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11026
11027         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11028
11029         * decompose.c: PPC decompositions for various ops.
11030
11031         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11032
11033 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11034
11035         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11036         call the generic trampoline code using a call, instead of a jump, to
11037         remove some special casing from the generic trampoline code.
11038
11039         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11040         (mono_codegen): Ditto.
11041
11042         * aot-compiler.c aot-runtime.c: Ditto.
11043
11044         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11045
11046         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11047         helper function to find the offset corresponding to a lazy fetch trampoline.
11048
11049         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11050         when doing generic sharing.
11051
11052         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11053         places.
11054         
11055         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11056         mini-trampolines.c to be with the other trampoline creation functions.
11057
11058         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11059         as it is equal to method->signature in most cases, add a 
11060         mono_emit_method_call_full variant which takes a signature and an imt
11061         argument as well.
11062
11063 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11064
11065         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11066         to this function, since it could be computed easily from the method 
11067         argument.
11068         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11069         more.
11070
11071         * method-to-ir.c mini.c: Remove references to 
11072         compile_generic_method_wo_context.
11073
11074         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11075         generic method calls.
11076         
11077         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11078         dimensional non-szarrays.
11079
11080         * mini.c (mini_init): Register mono_array_new_1.
11081
11082         * jit-icalls.c (mono_array_new_1): New jit icall.
11083
11084         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11085         pointing to the method.
11086
11087         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11088         method addresses belonging to METHOD_JUMP patches in the 
11089         jump_target_got_slot_hash.
11090         (mono_aot_load_method): Ditto.
11091
11092         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11093         METHOD_JUMP patches.
11094
11095         * mini.c (mini_create_jit_domain_info): New helper function which 
11096         initializes/frees domain->runtime_info.
11097         (mini_free_jit_domain_info): Ditto.
11098         (mini_init): Install the domain hook functions with the runtime.
11099
11100         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11101         information maintained by the JIT.
11102
11103         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11104         insertion into jump_table_hash into mono_codegen (), also implement proper
11105         locking.
11106
11107         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11108         tail calls, it is already done by the aot code.
11109         
11110         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11111         mechanism on amd64.
11112
11113         * iltests.il.in: Make the jmp test a bit more complex.
11114
11115         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11116         generic instances which doesn't have a token.
11117
11118         * aot-runtime.c (decode_method_ref): Ditto.
11119         
11120         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11121         can handle this case now.
11122         (handle_box): Ditto.
11123
11124 2008-08-15  Geoff Norton  <gnorton@novell.com>
11125
11126         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11127         debugging check.
11128
11129 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11132         calling generic methods.
11133
11134         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11135
11136         * aot-runtime.c (decode_patch_info): Ditto.
11137
11138         * mini.c (mono_resolve_patch_target): Ditto.
11139         
11140         * patch-info.h: Add METHOD_RGCTX.
11141
11142         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11143
11144 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11145
11146         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11147         arguments in registers.
11148
11149         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11150         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11151
11152         * mini.c (mini_method_compile): Abort aot compilation for generic
11153         methods if generic sharing is disabled.
11154         
11155         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11156         an mrgctx.
11157
11158         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11159         requiring an mrgctx.
11160
11161         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11162         store instructions when converting a vcall to a normal call.
11163
11164         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11165         mono_arch_find_jit_info.
11166
11167 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11168
11169         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11170         avoid calling mono_method_full_name () for every method even if the
11171         env var is not set.
11172         (check_inline_caller_method_name_limit): Ditto.
11173
11174 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11175
11176         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11177         assemblies in one run.
11178
11179         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11180         skipped methods if it is not 0.
11181
11182         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11183
11184 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11185
11186         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11187           MONO_ARCH_HAVE_UNWIND_TABLE.
11188
11189         Contributed under MIT/X11 license.
11190
11191 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11192
11193         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11194           from default optimizaton list on Winx64.
11195
11196         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11197
11198         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11199           the LMF from the MonoJitTlsData structure.
11200
11201         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11202
11203         Contributed under MIT/X11 license.
11204
11205 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11206
11207         * mini.c (sigsegv_signal_handler): Fix the build.
11208
11209         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11210         assembly->aot_module.
11211
11212         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11213         hash table. This simplifies and speeds up a lot of code, and fixes support
11214         for .netmodules.
11215
11216         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11217         with the runtime.
11218
11219         * mini-exceptions.c: Ditto.
11220         
11221         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11222         'native_offset' argument, since these are computed in the 
11223         mono_find_jit_info () function.
11224
11225         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11226         is used by exceptions-ppc.c.
11227
11228         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11229         mono_arch_find_jit_info ().
11230         
11231         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11232         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11233         generic code in mini-exceptions.c.
11234
11235 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11236
11237         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11238
11239         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11240         
11241         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11242         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11243         called while holding the loader lock. Fixes #415608.
11244         (mono_aot_get_method_from_token_inner): Ditto.
11245
11246 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11247
11248         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11249         to reduce differences between this and the generic implementation in
11250         mini-exceptions.c.
11251         (ves_icall_get_frame_info): Ditto.
11252
11253         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11254
11255         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11256         longer neccesarry.
11257
11258         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11259         mono_arch_get_call_filter () and make it non-static, for consistency with the
11260         other architectures.
11261
11262 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11263
11264         * mini.c:
11265         * local-propagation.c:
11266         * mini-x86.c: Correct the name of arch defines.
11267
11268 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11269
11270         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11271         NO_EMULATE_LONG_SHIFT_OPS define.
11272
11273 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11274
11275         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11276         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11277
11278         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11279         MACH fixes. Merged from the 2.0 branch.
11280
11281         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11282
11283         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11284         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11285
11286         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11287
11288         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11289         mono_marshal_get_native_wrapper () signature changes.
11290
11291 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11292
11293         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11294         conversion bug under arm.
11295
11296 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11297
11298         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11299
11300         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11301         with overflow checking.
11302
11303 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11304
11305         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11306         to the genmdesc.pl file
11307
11308 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11309
11310         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11311         arg_array in the soft-float versions of the LOAD/STORE macros.
11312
11313         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11314         implementation.
11315
11316         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11317
11318 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11321         a float HFA. Fixes #413621.
11322
11323 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11324
11325         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11326         frame_size to args_size. Fixes build.
11327
11328 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11331         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11332
11333         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11334         the stack are not unaligned. Fixes #413247.
11335         
11336 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11337
11338         * mini.c: update jitted methods performance counters.
11339
11340 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11341
11342         * mini-exceptions.c: increase the exceptions thrown performance
11343         counter in mono_handle_exception ().
11344
11345 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11346
11347         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11348         can work with netmodules.
11349
11350 2008-07-28  Geoff Norton  <gnorton@novell.com>
11351
11352         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11353         regression tests.
11354
11355 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11358         correct place.
11359
11360 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11361
11362         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11363           The float param registers and other param registers must be the 
11364           same index on Windows x64.
11365
11366         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11367           ArgValuetypeAddrInIReg argument case.  Setting the argument
11368           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11369
11370         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11371           variable computed above as the copy length for arguments of storage
11372           type ArgValuetypeAddrInIReg.
11373
11374         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11375           ArgValuetypeAddrInIReg argument case.  This case will rely on
11376           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11377
11378         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11379           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11380           jump and tail call instructoins as they do not follow the typical call behavior.
11381
11382         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11383           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11384           local variable and pass the local variable by reference to the called method.
11385
11386         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11387           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11388           of a struct is passed in a register it must be saved with the other
11389           volatile argument on the stack.
11390
11391         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11392           frame pointer the stack adjustment value must be saved to the unwind 
11393           info structure.
11394
11395         Contributed under MIT/X11 license.
11396
11397 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11398
11399         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11400         which got lost in the merge.
11401
11402 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11403
11404         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11405         build.
11406
11407         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11408         
11409         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11410         icalls, since they won't be patched.
11411
11412         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11413         different code sequence when running under valgrind to prevent some valgrind
11414         errors.
11415
11416         * iltests.il.in: Add new regression test.
11417
11418         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11419         end with a throw.
11420
11421         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11422         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11423
11424         * iltests.il.in: Add new test.
11425
11426         * aot-compiler.c: Fix some warnings.
11427
11428         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11429         Fixes #412494.
11430
11431 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11432
11433         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11434         (mini_usage_jitdeveloper): Add a missing --wapi option.
11435
11436 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11437
11438         * mini-codegen.c: Simplify the is_fp macros.
11439         (free_up_ireg): Remove, use free_up_reg instead.
11440         (free_up_reg): Fix the fp case.
11441
11442 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11445         lowered earlier.
11446
11447         * exceptions-x86.c: Merge some changes which seemed to have got lost
11448         in the linear-ir merge.
11449
11450         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11451
11452         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11453         long vreg volatile even if the variable was already created.
11454
11455         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11456         volatile variables.
11457
11458 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11461
11462         * mini.c (mono_jit_compile_method_inner): Add support for 
11463         MONO_EXCEPTION_BAD_IMAGE.
11464
11465         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11466         mini_method_get_context () returns NULL. Fixes #356531.
11467
11468         * mini.c (mono_method_to_ir): Ditto.
11469         
11470         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11471         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11472
11473 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11474
11475         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11476         in the LDFTN implementation.
11477
11478 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11479
11480         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11481         code, patch calls to icalls, too, even if they're not in the
11482         shared generic code hash.  Fixes #411962.
11483
11484 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11485
11486         * cpu-x86.md: Increase the length of the fcall opcodes.
11487
11488         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11489         calls returning floats.
11490
11491         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11492         on NEWARR.
11493         
11494         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11495         missed earlier.
11496
11497         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11498         into the domain->method_code_hash.
11499
11500         * aot-compiler.c: Fix win32 build.
11501
11502         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11503         
11504         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11505         gshared NEWARR implementation.
11506
11507         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11508
11509         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11510         can be used outside of method_to_ir.
11511
11512         * mini.h (MonoCompile): Add arg_types field.
11513
11514         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11515         
11516         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11517         the values of the local arg_array and param_types array.
11518
11519 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11520
11521         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11522         got accesses might only get generated later when NEWOBJ is decomposed.
11523         
11524         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11525         looking up the native code of the target method when a delegate is called
11526         for the first time.
11527
11528         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11529         optimization.
11530
11531         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11532
11533         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11534         AOT work on platforms without a working dlsym implementation.
11535
11536         * mini.h: Bump AOT image format version.
11537         
11538 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11539
11540         * mini-exceptions.c: Free a MonoType with
11541         mono_metadata_free_type() instead of g_free().
11542
11543         * aot-runtime.c: Free a MonoType.
11544
11545 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11548         optimization.
11549
11550         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11551         fp stack on x86.
11552
11553 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11554         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11555         profiler hook.
11556
11557 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11560         NEWOBJ calls on valuetypes.
11561
11562         * iltests.il.in: Add new test.
11563
11564         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11565
11566 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11569         is no longer needed.
11570
11571         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11572         non register sized integer arguments.
11573         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11574         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11575         emit_memcpy2 ().
11576
11577         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11578         CEE_MONO_RETOBJ.
11579         
11580         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11581         two a binop with different sized arguments is emitted.
11582
11583         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11584         instruction in the ins==NULL case.
11585
11586 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11587
11588         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11589
11590         * mini-x86.c: Fix osx build.
11591
11592         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11593         opcodes as well.
11594
11595         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11596         instruction for non int sized variables.
11597
11598         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11599         implementation.
11600
11601 2008-07-23  Robert Jordan  <robertj@gmx.net>
11602
11603         * method-to-ir.c: Fix MSVC build.
11604
11605 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11606
11607         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11608         a non int sized type, widen it to an int since newer versions of gcc seem to
11609         generate code which needs this.
11610
11611         * ssa2.c abcremoval2.c: Fix warnings.
11612
11613         * *: Merge the Linear IR branch.
11614
11615         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11616         the ChangeLog file there describes all the changes done over the years. 
11617         Further documentation can be found at www.mono-project.com/Linear_IL.
11618
11619 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11620
11621         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11622           The float param registers and other param registers must be the 
11623           same index on Windows x64.
11624
11625         Contributed under MIT/X11 license.
11626
11627 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11628
11629         * mini.c: Make the previous fix GC safe.
11630
11631 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11632
11633         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11634
11635 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11636
11637         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11638           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11639           ArgValuetypeAddrInIReg instead.
11640
11641         Contributed under MIT/X11 license.
11642
11643 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11644
11645         * mini-codegen.c (get_register_spilling): Fix a warning.
11646
11647 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11648
11649         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11650         for types which the initialization fails. Raises the provided exception
11651         at the right stop after cleanup.
11652
11653 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11654
11655         * aot-compiler.c: Free most of the memory allocated during compilation.
11656
11657         * mini.c (mini_parse_debug_options): Fix a leak.
11658         
11659         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11660         during aot compilation.
11661
11662 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11663
11664         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11665         it has too much register pressure.
11666
11667 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11668
11669         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11670
11671 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11672
11673         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11674         on x86.
11675
11676         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11677         on amd64 similar to the way it is done on arm.
11678
11679         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11680
11681         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11682         consistency, normalize error messages, avoid loading aot-only modules in
11683         normal mode.
11684
11685         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11686         for consistency.
11687
11688         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11689
11690 2008-07-11  Martin Baulig  <martin@ximian.com>
11691
11692         * debug-debugger.h
11693         (MonoDebuggerInfo): Add `interruption_request'.
11694
11695 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11696
11697         * aot-compiler.c (emit_plt): Remove some dead code.
11698
11699         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11700
11701         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11702         return the plt info offset belonging to a given plt entry.
11703
11704         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11705         mono_aot_get_plt_info_offset.
11706         
11707         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11708         similar to the amd64 code by makeing jumps through a separate jump table 
11709         instead of embedding the jump addresses into the code.
11710
11711 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11712
11713         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11714         method.
11715
11716 2008-07-10  Martin Baulig  <martin@ximian.com>
11717
11718         * mini.c (mini_method_compile): Disable generics sharing when
11719         running in the debugger.
11720
11721 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11722
11723         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11724
11725         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11726         the local register allocator from running out of registers on x86 when 
11727         using aot.
11728
11729 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11730
11731         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11732         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11733         C4146.
11734
11735         Contributed under MIT/X11 license.
11736
11737 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11738
11739         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11740         speed up the assembler.
11741
11742 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11743
11744         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11745         support.
11746
11747         * mini.c: Move the soft float handling macros a bit earlier, add 
11748         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11749         place.
11750
11751         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11752
11753         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11754         read-only to help catch code allocation requests.
11755         
11756         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11757         and turn it off when using --aot-only or when compiling with --aot=full.
11758
11759         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11760         jump table for switches from the normal domain mempool, not the code
11761         manager.
11762
11763         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11764         unbox trampoline which handles aot-only mode too.
11765
11766         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11767         an AOTed unbox trampoline.
11768
11769         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11770
11771 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11772
11773         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11774         ""
11775
11776         Contributed under MIT/X11 license.
11777
11778 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11779
11780         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11781           the unwind information for the method at the end of the allocated block.
11782           
11783         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11784           MonoCompileArch to hold the unwind info for SEH on Winx64
11785         
11786         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11787           frame pointer info for the method being compiled.
11788           
11789         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11790           the call to mono_exception_from_token.
11791           
11792         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11793           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11794           information is stored a the end of the method block because it is all 32-bit offset based.
11795
11796         Contributed under MIT/X11 license.
11797
11798 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11799
11800         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11801
11802         * wapihandles.c: Fix warnings.
11803
11804         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11805         mode.
11806
11807         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11808         mono_jit_compile_method in aot-only mode since that calls the type 
11809         initializer.
11810         
11811         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11812         get_delegate_invoke_impl in aot-only mode.
11813
11814         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11815
11816 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11817
11818         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11819
11820         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11821         is on by default.
11822
11823         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11824
11825         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11826         init trampoline from the AOT file as well.
11827
11828         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11829         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11830         code.
11831
11832         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11833         mono_init.
11834
11835         * exceptions-amd64.c: Add _full variants for the remaining exception code
11836         creation functions as well, allow emission of relocatable code, remove
11837         caching since that is now done by the caller.
11838
11839         * mini-exceptions.c: Add _full variants for the remaining exception code
11840         creation functions as well, add aot-only support.
11841
11842         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11843         if we can determine a proper token for them.
11844         (add_wrappers): Add a few more wrappers.
11845         (emit_method_code): Remove some dead code.
11846         (emit_trampolines): Emit exception code too.
11847
11848         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11849
11850         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11851         mono_array_new_va which avoids varargs.
11852
11853         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11854
11855         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11856         mono_arch_create_specific_trampoline () in all places.
11857
11858         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11859         a bit so it can be used for other things as well.
11860         
11861         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11862         on demand as well.
11863
11864         * exceptions-amd64.c: Rename the caching from the exception code creation
11865         functions, it is done by the caller instead.
11866         
11867         * exceptions-amd64.c: Change the signature of the exception code creation 
11868         functions to allow the creation of relocatable code later.
11869
11870         * mini-exceptions.c: Add a set of functions to query the various 
11871         runtime-generated exception functions.
11872
11873         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11874         mono_arch_.. () functions.
11875         
11876 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11877
11878         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11879
11880         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11881
11882         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11883         (mini_get_vtable_trampoline): Ditto.
11884
11885         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11886         code in the AOT case by returning the code size and a list of relocations to
11887         the caller.
11888
11889         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11890
11891 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11892
11893         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11894           clean the stack.
11895
11896         Contributed under MIT/X11 license.
11897
11898 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11899
11900         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11901         so the buffer size can be computed correctly. Fixes #404735.
11902
11903         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11904         normally as cfg->debug_info is already freed.
11905
11906 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11907
11908         * mini-amd64.c: For calls returning vtypes in registers, don't store
11909         the return address on the stack, instead allocate a separate local for
11910         it. Fixes #404729.
11911
11912 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11913
11914         * mini-trampolines.c, mini.h: Add an argument to
11915         mono_create_jit_trampoline_in_domain() for turning off the adding
11916         of the sync wrapper.
11917
11918         * mini.c: Use the JIT trampoline without sync instead of
11919         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11920         be patched.
11921
11922 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11923
11924         * driver.c: Turn on GSHARED optimization by default.
11925
11926 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11927
11928         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11929         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11930
11931         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11932         create a variant of the generic trampoline code callable from AOTed trampolines.
11933
11934         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11935         trampoline code callable from AOTed trampolines.
11936
11937         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11938
11939 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11940
11941         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11942         pass-through manner.
11943
11944         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11945         and don't fail sharing for them anymore.
11946
11947         * mini-exceptions.c: Handle exceptions in shared generic methods.
11948
11949         * generic-sharing.c: When checking the context of a generic
11950         method, also check its class's context.  Don't treat wrappers as
11951         sharable.
11952
11953         * mini-trampolines.c: Some code factored out to
11954         metadata/generic-sharing.c.  Handle the MRGCTX case.
11955
11956         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11957         we must deal with the method being of another instantiation of the
11958         class.  Add static rgctx invoke wrappers to generic methods.
11959
11960 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11961
11962         * mini.c: Provide all jit infos of generic shared methods with a
11963         generic jit info.
11964
11965         * mini-exceptions.c: Handle the new situation that a generic info
11966         might be available, but not info about the this/vtable/mrgctx
11967         variable.
11968
11969 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11970
11971         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11972         generic methods.
11973
11974 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11975
11976         * dominators.c (check_dominance_frontier): Fix a warning.
11977
11978         * mini.h: Add some missing prototypes.
11979
11980         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11981
11982         * driver.c (mono_jit_init_version): Correct the comments since the first
11983         argument should be the name of the root domain, not a filename.
11984
11985         * aot-runtime.c (make_writable): Error out if this is called while running
11986         with --aot-only.
11987         (load_aot_module): Ditto.
11988
11989         * aot-compiler.c: Really fix the computation of method indexes.
11990
11991         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11992         optimizations as this is no longer called frequently.
11993
11994         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11995         method and the invoke impl code and pass it to the delegate trampoline instead of
11996         just the delegate class.
11997
11998 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11999
12000         * aot-compiler.c: Fixup the computation of method indexes.
12001         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12002         the method builder infrastructure.
12003
12004         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12005         has no header.
12006
12007         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12008         mode, load the method right away instead of creating a trampoline.
12009
12010         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12011
12012         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12013         some checks a bit.
12014
12015 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12016
12017         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12018         (mono_aot_load_method): Use method_index instead of method->token.
12019
12020         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12021         can handle icalls etc. properly.
12022
12023         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12024
12025         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12026
12027         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12028         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12029         JIT_ICALL_ADDR patch type.
12030
12031         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12032
12033         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12034         request flag.
12035         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12036
12037         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12038
12039 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12040
12041         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12042         domain->jit_code_hash.
12043
12044 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12045
12046         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12047
12048 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12049
12050         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12051         get_this_arg_from_call, let it compute it when needed.
12052
12053         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12054         gsctx from code only when needed.
12055
12056         * mini-trampolines.c (get_generic_context): Rename this to 
12057         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12058         it can be called by the arch backends.
12059
12060         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12061
12062 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12063
12064         * driver.c (mono_main): Add experimental --aot-only command line option.
12065
12066         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12067         set.
12068
12069 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12070
12071         * driver.c (DllMain): Remove mono_module_handle.
12072
12073         Contributed under MIT/X11 license.
12074
12075 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12076
12077         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12078         for emitting methods which are not in the source assembly. Detect and report
12079         failure of assembling+linking.
12080         
12081         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12082
12083         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12084
12085 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12086
12087         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12088
12089 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * mini.h: Remove some obsolete prototypes.
12092
12093         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12094
12095 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12096
12097         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12098         supported by Visual Studio, so use alloca().
12099
12100 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12103         Fixes #402585.
12104
12105 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12106
12107         * mini.c: Fail sharing of a generic method if it contains an open
12108         catch clause (because we don't pass MRGCTXs yet).
12109
12110 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12111
12112         * mini.c: When compiling a method with generic sharing, insert the
12113         method instantiated with an all-Object generic context into the
12114         jit info table, instead of the context of the first instantiation
12115         of the method we happen to compile.
12116
12117 2008-06-18  Martin Baulig  <martin@ximian.com>
12118
12119         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12120         `major_version' and `minor_version'.
12121
12122 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12123
12124         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12125         mono_method_is_generic_sharable_impl() takes an additional
12126         argument specifying whether to treat type variables as reference
12127         types.
12128
12129 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12130
12131         * mini.h: Removed obsolete prototypes.
12132
12133 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12134
12135         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12136         already handle them.
12137
12138 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12139
12140         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12141         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12142         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12143         tramp-x86.c: Added a MonoGenericContext* argument to
12144         mono_arch_get_unbox_trampoline() so that it can call other
12145         functions which require it.
12146
12147 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12148
12149         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12150         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12151         mono_arch_get_this_arg_from_call() takes a
12152         MonoGenericSharingContext* as well.
12153
12154 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12155
12156         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12157         implement generic sharing of unbox.
12158
12159 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12160
12161         * mini.c: Don't compute the vtable to determine whether a field is
12162         special static, because it might not work for open types.
12163
12164 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12165
12166         * mini.c: Removed the unused token_type and token_source arguments
12167         from get_runtime_generic_context_ptr().
12168
12169 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12170
12171         * mini.c (ADD_BINOP): fix the build
12172
12173 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12174
12175         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12176         a widening op.
12177
12178 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12179
12180         * mini.h: Removed class relations enum that's not used anymore.
12181
12182 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12183
12184         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12185
12186         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12187         the lazy fetch trampoline access code.
12188
12189 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12190
12191         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12192
12193 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12194
12195         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12196
12197         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12198
12199         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12200
12201 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12202
12203         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12204         intrinsics.
12205
12206         * mini-ops.h: Add MIN/MAX_UN opcodes.
12207
12208         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12209         intrinsics.
12210
12211         * basic-math.cs: Add more min/max tests.
12212
12213         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12214
12215 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12216
12217         * mini.c: Small fix in the prologue of emit_castclass.
12218
12219 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12220
12221         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12222
12223         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12224         do not work even for unsigned types. Fixes #400014.
12225
12226         * basic-math.cs: Add regression tests for unsigned Min/Max.
12227
12228 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12229
12230         * mini.c: Added additional context_used argument to several
12231         functions, which will be needed for sharing generic methods.  Use
12232         GET_RGCTX macro wherever appropriate.  Declare only one
12233         context_used in mono_method_to_ir().
12234
12235 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12236
12237         * mini.c, generic-sharing.c: Removed generic class relations.
12238
12239         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12240         functions due to MRGCTX changes.
12241
12242 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12243
12244         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12245         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12246         with calculated IMT.
12247
12248         * mini.c: Generic sharing of calls via generic interfaces.
12249
12250         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12251         generic method with non-constant MonoGenericContext*.  Instead,
12252         the context is taken out of the method itself.
12253
12254 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12255
12256         * mini.c: Generic sharing of ldvirtftn.
12257
12258 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12259
12260         * mini.c: Generic sharing of ldftn.
12261
12262 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12263
12264         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12265
12266 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12267
12268         * mini.c: Generic sharing of the special case of ldtoken followed
12269         by a call to GetTypeFromHandle.
12270
12271 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12272
12273         * mini.c: Generic sharing of box for nullable types.
12274
12275 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12276
12277         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12278         are passed on the stack. Fixes #324807.
12279
12280 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12281
12282         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12283         for the ArgValuetypeAddrInIReg case.
12284
12285         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12286         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12287
12288         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12289         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12290         local variable and pass the local variable by reference to the called method.
12291           
12292         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12293         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12294
12295         Contributed under MIT/X11 license.
12296
12297 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12298
12299         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12300
12301         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12302         everything.
12303
12304 2008-06-10  Martin Baulig  <martin@ximian.com>
12305
12306         * debug-mini.c
12307         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12308
12309 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12310
12311         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12312         possible error when no arguments are passed.
12313
12314         Contributed under MIT/X11 license.
12315
12316 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12317
12318         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12319         where the file name is NULL.
12320
12321 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12322
12323         * mini.c: Fix s390 build.
12324
12325 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12326
12327         * trace.c (mono_trace_parse_options): Fix warnings.
12328
12329         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12330
12331 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12332
12333         * mini.c (remove_block_if_useless): Avoid printing the method name.
12334         
12335         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12336         MONO_INST_NEW.
12337
12338         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12339         LMF. Not yet used.
12340
12341         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12342         translated code after it has been patched.
12343
12344 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12345
12346         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12347         avoid problems during code patching on SMP systems.
12348         (emit_call): Avoid adding a patch info which is already added by 
12349         emit_call_body.
12350         (mono_arch_emit_exceptions): Ditto.
12351
12352 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12353
12354         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12355         MONO_TYPE_ISSTRUCT already checks for it.
12356
12357 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12358
12359         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12360           structs with floats on Winx64 the float registers are not used.  
12361           The integer registers are always used..
12362         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12363           only one register will be used and only if the size of the struct 
12364           is 1,2,4, or 8 bytes.
12365
12366         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12367           to work for Winx64.
12368
12369         Contributed under MIT/X11 license.
12370
12371 2008-06-05  Martin Baulig  <martin@ximian.com>
12372
12373         * debug-debugger.c (debugger_lookup_class): Also call
12374         mono_class_setup_methods() here; we're only called from RTI.
12375
12376 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12377
12378         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12379         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12380         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12381         Post-process object files and add dtrace-generated object, if necessary.
12382
12383         Contributed under MIT/X11 license.
12384
12385 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12386
12387         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12388         element class.
12389
12390         * mini.c: Generic sharing for unbox.any and castclass.
12391
12392 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12393
12394         * mini.c: Ignore tailcall prefix in shared generic code and when
12395         doing calls which require a vtable/rgctx argument.
12396
12397 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12398
12399         * mini.c: Don't free the JIT info.
12400
12401         * driver.c: Changes in the JIT info table testing code.
12402
12403 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12406         interruption. Fix some warnings.
12407
12408         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12409         interruption_checkpoint.
12410
12411 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12412
12413         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12414         from embedding applications.
12415
12416 2008-06-02  William Holmes  <billholmes54@gmail.com>
12417
12418         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12419           reserving 32 bytes on the stack when making calls. 
12420
12421         Contributed under MIT/X11 license.
12422
12423 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12426         the linear IL branch.
12427
12428         * driver.c: Print out more information for --version on arm.
12429
12430 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12431
12432         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12433         bb_exit instead, since out of line bblocks might not actually be emitted
12434         out-of-line.
12435         
12436         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12437         maximum epilog size for out of line bblocks if tracing is enabled.
12438
12439         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12440
12441 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12442
12443         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12444
12445 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12446
12447         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12448         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12449         opcodes.
12450
12451 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12452
12453         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12454         the 'value' to store is a constant.
12455
12456         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12457
12458         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12459         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12460
12461 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12462
12463         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12464         for accessing method->generic_container.
12465
12466 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12469         
12470         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12471
12472         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12473
12474         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12475         fails.
12476
12477 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12478
12479         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12480
12481         * mini.c: Handle the case when mono_class_vtable () fails.
12482
12483 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12484         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12485         the stat profiler.
12486
12487 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12488
12489         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12490         together with domain sharing.
12491
12492 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12493
12494         * mini.c: Treat callvirts to final methods like non-virtual calls
12495         when doing generic sharing, i.e. look them up in the runtime
12496         generic context.
12497
12498 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12499
12500         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12501         with computed types (for generic sharing).
12502
12503         * mini.c: Generic sharing for mkrefany and refanyval.
12504
12505 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12506
12507         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12508         possible.
12509
12510         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12511         the generic sharing code.
12512         
12513         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12514         when needed.
12515
12516 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12517
12518         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12519
12520 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12521
12522         * driver.c: updated copyright date
12523
12524 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12525
12526         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12527         needed.
12528
12529 2008-05-19  Martin Baulig  <martin@ximian.com>
12530
12531         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12532         pointing to the new `_mono_debug_using_mono_debugger' variable.
12533
12534         * driver.c
12535         (mono_main): Check mono_debug_using_mono_debugger() rather than
12536         the `MONO_INSIDE_MDB' environment variable to check whether we're
12537         inside the debugger.
12538
12539 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12540
12541         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12542         argument.
12543
12544 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12545
12546         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12547
12548         * mini.c: Added mini_assembly_can_skip_verification. This
12549         function checks if the assembly requested to skip verification. 
12550         Fixes part of #387274.
12551
12552 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12553
12554         * mini.c (mini_get_method): Disable the check for open generic classes when
12555         using generic sharing.
12556
12557         * generics.cs: Add a test for #387034.
12558
12559         * mini.c (mini_get_method): Check whenever the method class is an open generic
12560         type, and return NULL in that case, causing a verification error. Fixes
12561         #384123.
12562
12563 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12564
12565         * driver.c (mono_main): Revert r102623. The right
12566         thing to do is to enable the verifier under verifiable
12567         unless a --security flag was passed.
12568
12569         We need this non-trivial behavior for --verify-all otherwise
12570         mcs-compileall won't be able to use it. As it needs everything to
12571         be verified under validil.
12572
12573 2008-05-06  Martin Baulig  <martin@ximian.com>
12574
12575         Fix #383749.
12576
12577         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12578         (mono_debugger_thread_cleanup): Likewise.
12579         (mono_debugger_extended_notification): Likewise.
12580
12581 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12582
12583         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12584         against both inflated and non-inflated methods. We need to check against the
12585         generic definition for cases where the instantiated method is not visible.
12586         We need to check against the inflated types for cases where the instantiation
12587         changes any super type. This fixes #382986.
12588
12589         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12590         that check for visibiliy as generic params only appears as the type subject
12591         of tokens on call opcodes. Field manipulation and ldftn must always
12592         target an exact type.
12593
12594 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12595
12596         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12597         if no related --security flag is passed.
12598
12599 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12600
12601         * mini-arch.h: Prepare support for ppc64.
12602
12603         Contributed under MIT/X11 license.
12604
12605 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12606
12607         * aot-runtime.c: Prepare support for ppc64.
12608
12609         Contributed under MIT/X11 license.
12610
12611 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12612
12613         * mini-ops.h: Prepare support for ppc64.
12614
12615         Contributed under MIT/X11 license.
12616
12617 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12618
12619         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12620
12621         Contributed under MIT/X11 license.
12622
12623 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12624
12625         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12626         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12627         assemblies on windows.
12628
12629 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12630
12631         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12632         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12633         * main.c: Use UTF-8 encoded command line instead of Windows default code
12634         page on Windows to support Unicode.
12635         * driver.c (DllMain): New function for mixed-mode assembly support.
12636         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12637         export __stdcall functions without decoration.
12638
12639         Contributed under MIT/X11 license.
12640
12641 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12642
12643         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12644         saving it very early.
12645
12646 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12647
12648         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12649         deleted.  The only way to access the new RGCTX is via the
12650         trampline.
12651
12652         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12653         vtable instead of the RGCTX to static methods.
12654
12655         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12656         accessing the new RGCTX.
12657
12658         * generic-sharing.c: There is no separation between self, type
12659         arguments and other types in the RGCTX anymore.
12660
12661 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12662
12663         * mini-amd64.c (add_general): Remove previous stack adjustment.
12664         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12665         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12666         for 32 bytes of stack space reserved for all calls.
12667         
12668         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12669         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12670         adjustment.
12671         
12672         Code contributed under MIT/X11 license.
12673
12674 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12675
12676         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12677         against the root definition, peeling out method and type instantiations.
12678         Cache verify success results, code that fails verification is still
12679         checked multiple times.
12680
12681 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12682
12683         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12684
12685 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12686
12687         * mini-amd64.c (add_general): Always increment stack on Win64.
12688         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12689         on Win64.
12690         
12691         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12692         stack based argument handling on Win64.
12693         
12694         Code contributed under MIT/X11 license.
12695
12696 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12697
12698         * Makefile.am (version.h): Add support for git-svn.
12699
12700 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12701
12702         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12703         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12704         avoiding allocations and libc functions which might deadlock.
12705         
12706         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12707         'no-gdb-backtrace' option is set.
12708
12709         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12710
12711         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12712
12713 2008-04-21  Martin Baulig  <martin@ximian.com>
12714
12715         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12716         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12717
12718 2008-04-21  Martin Baulig  <martin@ximian.com>
12719
12720         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12721         `thread_vtable', `event_handler_ptr' and `event_handler'.
12722
12723 2008-04-21  Martin Baulig  <martin@ximian.com>
12724
12725         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12726         allows delayed initialization of the `executable_code_buffer' when
12727         attaching.
12728
12729 2008-04-21  Martin Baulig  <martin@ximian.com>
12730
12731         * mini.h (mono_debugger_create_notification_function): Removed.
12732         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12733
12734         * mdb-debug-info64.s
12735         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12736
12737         * mdb-debug-info32.s
12738         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12739
12740         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12741         currently only works on x86 and x86_64, so don't create it on ppc.
12742
12743 2008-04-21  Martin Baulig  <martin@ximian.com>
12744
12745         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12746
12747         * mini.c
12748         (mini_method_compile): In the fp elimination check, check
12749         `debug_options.mdb_optimizations' in addition to
12750         mono_debug_using_mono_debugger().       
12751
12752         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12753         disable some JIT optimizations which are only disabled when
12754         running inside the debugger.
12755         Added `--help-debug' option to describe the debugging options.
12756         (parse_debug_options): New static function to parse the `--debug'
12757         options, so we can easily add more stuff in future.
12758
12759 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12760
12761         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12762         the method has no body.
12763
12764 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12765
12766         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12767         assembly is not allowed in MSVC 64-bit compiler. 
12768         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12769         as we get floating point exceptions everywhere.
12770         
12771         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12772         correctly align arguments for call to throw_exception.
12773         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12774         
12775         Code contributed under MIT/X11 license.
12776
12777 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12778
12779         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12780
12781 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12782
12783         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12784
12785         * mini-amd64.c (NEW_INS): Set cil_code.
12786
12787         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12788         from mini-amd64.c so all debugger related logic is in one place.
12789
12790         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12791         later won't have a random ip assigned to them.
12792
12793 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12796         the arch specific function initializes code_size.
12797         (mono_create_delegate_trampoline): Ditto.
12798
12799         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12800         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12801         platforms.
12802
12803         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12804         running under the debugger.
12805
12806         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12807         debugger.
12808
12809         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12810         debugger. Also move the disabling of optimizations here from driver.c.
12811         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12812         debugger.
12813
12814         * mini.h (MonoCompile): Add a few new flags.
12815
12816 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12819         so the cil_code field of created MonoInst's is properly set.
12820         (mini_select_instructions): Ditto.
12821
12822         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12823         (MONO_INST_NEW_CALL): Ditto.
12824
12825         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12826         in many places so the ins->cil_code field is properly initialized.
12827
12828         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12829         place.
12830
12831 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * mini.c (mini_method_compile): Print a different message when compiling a 
12834         shared method.
12835         
12836         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12837         > 1.
12838
12839 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12840
12841         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12842         SSE2 instructions.
12843
12844         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12845         
12846 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12847
12848         * mini.c (handle_stack_args): Make this return void since its return value was
12849         never used. Also set cfg->unverifiable for invalid IL instead of calling
12850         G_BREAKPOINT ().
12851
12852 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12853
12854         * mini.c: Make sure "this" is live in catch clauses with type
12855         variables in shared generic code.
12856
12857 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12858
12859         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12860         generic_class_is_reference_type() to ensure the proper behaviour
12861         when sharing generic code and the type in question is a type
12862         argument.
12863
12864 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12867         race conditions when printing thread dumps. Fixes #377738.
12868
12869 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12870         
12871         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12872         shows up when both MonoInst arguments can cause aliasig.
12873         There is likely no way in the current JIT to trigger this problem, but
12874         it showed up in the development of generics sharing, when in a new
12875         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12876         When the generics sharing code will be committed, its tests will be
12877         valid also for this bug.
12878
12879 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12882         PATCH_INFO_METHOD.
12883
12884         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12885         NULL.
12886
12887 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12888
12889         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12890         use a more detailed exception message for InvalidCastException.
12891
12892         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12893
12894         * driver.c (mono_main): Add --debug=casts option to turn on better 
12895         InvalidCastException message details.
12896
12897         * mini.c (mini_get_debug_options): New helper function to return the address of
12898         the debug_options variable.
12899
12900         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12901         the jit_tls TLS variable.
12902
12903         * mini.c (mono_jit_tls): New TLS variable.
12904
12905         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12906         option is used.
12907
12908 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12909
12910         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12911
12912         * mini.c: Removed verifer related stuff, code moved to verify.c.
12913
12914         * driver.c: Using code from verify.c instead of mini.c.
12915
12916 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12917
12918         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12919         longer valid.
12920
12921 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12922
12923         * mini.c (check_for_method_verify): Enabling verification of
12924         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12925         have been fixed.
12926
12927 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12930         caller saved registers as well.
12931         
12932         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12933         saved registers as well.
12934
12935 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12936
12937         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12938
12939         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12940         code.
12941
12942 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12943
12944         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12945         to get_call_info.
12946         (get_call_info): Take a gsctx argument instead of 'cfg'.
12947
12948 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12949
12950         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12951         mono_verify_all is set.
12952
12953         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12954
12955         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12956
12957 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12958
12959         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12960         an exception.
12961
12962         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12963         verifier and the code generated by the compiler.
12964
12965 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12966
12967         * mini.c: Generic sharing of the non-nullable case of the box
12968         instruction.
12969
12970 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12971
12972         * inssel.brg: Fix the build.
12973
12974         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12975
12976 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12977
12978         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12979         Array:Address. Fixes #372410.
12980
12981         * iltests.il.in: New tests for readonly prefix.
12982
12983 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12984
12985         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12986         mini-trampolines.c.
12987
12988         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12989         mini-exceptions.c.
12990
12991         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12992         
12993         * mini.c (mono_decompose_op_imm): New helper function.
12994
12995         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12996         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12997         return value.
12998
12999         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13000         mono_arch_output_basic_block. Fix warnings.
13001
13002         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13003         for now.
13004
13005 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13006
13007         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13008         since the extra frame is now detected automatically inside the loop.
13009
13010         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13011         opts which are now in mono_peephole_ins ().
13012         
13013         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13014
13015         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13016         frames and skip duplicate managed-to-native frames. Fixes #367665.
13017
13018         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13019         opts which are now in mono_peephole_ins ().
13020         (mono_arch_peephole_pass_2): Ditto.
13021
13022         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13023
13024         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13025         arch independent peephole optimizations.
13026
13027         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13028         opts which are now in mono_peephole_ins ().
13029
13030         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13031         
13032         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13033
13034         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13035         pattern.
13036
13037         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13038         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13039         opcode. 
13040
13041 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13042
13043         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13044         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13045         return value.
13046
13047         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13048         mono_arch_output_basic_block. Fix warnings.
13049
13050 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13051
13052         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13053         conv.ovf.u.un.
13054
13055 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13056
13057         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13058         conv.ovf.u.un.
13059
13060         * iltests.il: Add new tests.
13061
13062 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13063
13064         * mini.c: Removed Windows version macros.
13065
13066 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13067
13068         * generic-sharing.c: Put reflection types in the extensible part
13069         of the runtime generic context.
13070
13071         * mini.c: Generic sharing of the GetTypeHandle special case of the
13072         ldtoken instruction.
13073
13074 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13075
13076         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13077
13078         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13079         
13080         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13081         consistency with the other version on the linear IR branch.
13082
13083         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13084
13085         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13086
13087         * iltests.il.in: Add new tests.
13088
13089 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13090
13091         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13092
13093         * iltests.il.in: Add new tests.
13094
13095 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13096
13097         * mini.c: Two variables with the same name were declared in
13098         nesting contexts and one wasn't initialized.  Fixed.
13099
13100 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13101
13102         * mini.c: Generic sharing of the initobj instruction.
13103
13104 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13105
13106         * mini.c: make the test to optimize ldtoken from typeof() more
13107         precise.
13108
13109 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13110
13111         * mini.c: Generic sharing of the initobj instruction for reference
13112         types.
13113
13114 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13115
13116         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13117         the mono_breakpoint_clean_code() code to perform bound checks.
13118
13119 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13120
13121         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13122         mono_arch_patch_callsite() to include the start of the managed method
13123         to be able to perform bound checks.
13124
13125 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13126
13127         * mini.c: Generic sharing for the isinst instruction.
13128
13129 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13130
13131         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13132         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13133         with the runtime generic context argument.
13134
13135         * mini.c: Share calls to several types of unsharable methods by
13136         putting the address of the method code in the runtime generic
13137         context and doing an indirect call.
13138
13139         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13140         to switches.
13141
13142 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13143
13144         * generic-sharing.c: Change due to a change in the runtime genric
13145         context API.
13146
13147 2008-03-15  Martin Baulig  <martin@ximian.com>
13148
13149         * tramp-x86.c
13150         (mono_arch_nullify_class_init_trampoline): Add call to
13151         mono_breakpoint_clean_code() to make things work when running
13152         inside the debugger.
13153
13154         * tramp-amd64.c
13155         (mono_arch_nullify_class_init_trampoline): Add call to
13156         mono_breakpoint_clean_code() to make things work when running
13157         inside the debugger.
13158
13159 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13160
13161         * inssel-long.brg (reg): Fix 64 bit build.
13162
13163 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13164
13165         * mini.c, mini.h: Share static generic code by passing it an
13166         implicit argument pointing to the runtime generic context.
13167
13168         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13169         inssel-long32-mips.brg: New opcodes for calling shared static,
13170         which need to be passed the runtime generic context.
13171
13172         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13173         argument on the stack in the prologue if needed.  New function for
13174         finding the runtime generic context argument from the registers
13175         saved by the trampoline.
13176
13177         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13178         runtime generic context argument.
13179
13180         * tramp-amd64.c: Also restore the register used for the runtime
13181         generic context argument.
13182
13183         * mini-trampoline.c: Resolve shared static calls by consulting the
13184         runtime generic context via the new argument.
13185
13186         * generic-sharing.c: Add an argument to sharability-checking
13187         functions that specifies whether type variables should be treated
13188         as sharable type arguments.
13189
13190         * inssel-x86.brg: Removed a superfluous, buggy rule.
13191
13192         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13193         to switches.
13194
13195 2008-03-14  Martin Baulig  <martin@ximian.com>
13196
13197         * debug-debugger.c (main_thread_handler): Call
13198         mono_runtime_run_main() without sending any notifications.
13199
13200         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13201
13202 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13203
13204         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13205
13206 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13207
13208         * tramp-x86.c: Fixed register restore offsets in the trampoline
13209         code for ECX and EDX.
13210
13211 2008-03-12  Geoff Norton  <gnorton@novell.com>
13212
13213         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13214         different ucontext_t implementations.
13215         * exceptions-arm.c: Use the above defines to get exceptions working on 
13216         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13217         * mini-arm.c: Implement iPhone icache support (based on a patch by
13218         Luke Howard lukeh@padl.com)
13219
13220 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13221
13222         * mini.c: Enable generic sharing of calls to non-static
13223         non-interface non-generic non-value-type methods.
13224
13225         * mini-trampolines.c: Resolve calls from shared generic code.
13226
13227 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13228
13229         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13230
13231         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13232
13233 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13234
13235         * mini.c: some fixes for the AOT compiler.
13236
13237 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13238
13239         * cpu-amd64.md: Add clob:1 to some float opcodes.
13240
13241 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13242
13243         * mini.h: Added MiniVerifierMode enumeration.
13244
13245         * mini.c: Added mini_verifier_set_mode to control
13246         the usage of the new verifier.
13247
13248         * mini.c (mono_method): Integrated the new verifier.
13249
13250         * driver.c: Extended --security option with validil and
13251         verifiable options to activate the new verifier.
13252
13253 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13254
13255         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13256         optimization to ctors taking 0 or 2 arguments too.
13257
13258         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13259         a bit.
13260
13261         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13262
13263         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13264
13265 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13266
13267         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13268         non-aot case as well.
13269
13270         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13271
13272         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13273         changes.
13274
13275         * aot-compiler.c (encode_patch): Ditto.
13276
13277         * mini.h (G_MININT32): Fix the definition of this.
13278
13279 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13280
13281         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13282
13283         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13284
13285 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13288         methods returning vtypes in registers.
13289         (mono_arch_allocate_vars): Ditto.
13290
13291         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13292
13293         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13294
13295         * generics.cs: Add a test from the linear IR branch.
13296
13297         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13298
13299         * mini.c (inline_method): Cache failed inline attempts.
13300
13301 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13302
13303         * mini.c: For shared methods of generic classes put the location
13304         of "this" into the MonoGenericJitInfo.
13305
13306         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13307         register out of a MonoContext by register number.  Add the generic
13308         sharing context as an argument to mono_arch_find_this_argument().
13309
13310         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13311         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13312         for new arch function.
13313
13314         * mini-exception.c: Handle open exception clauses in shared
13315         generic code.
13316
13317         * mini-trampolines.c: Supply additional argument to
13318         mono_arch_find_this_argument().
13319
13320 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13321
13322         * Makefile.am (regtests): Run the bench.exe tests last.
13323
13324 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13325
13326         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13327         a bit.
13328
13329 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13330
13331         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13332         with MS.
13333
13334         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13335         
13336         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13337
13338         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13339         whose class has no cctor.
13340
13341         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13342
13343 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13344
13345         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13346         unverified.
13347
13348 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13349
13350         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13351         to be in sync with the code on the linear IR branch.
13352
13353         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13354
13355         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13356
13357 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13360
13361         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13362
13363         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13364
13365         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13366
13367         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13368         
13369         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13370         body.
13371
13372 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13373
13374         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13375         OP_LOADR4_MEMBASE emission.
13376
13377         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13378         (mono_spillvar_offset_float): Ditto.
13379
13380         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13381
13382         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13383         emission.
13384
13385         * basic-long.cs: Add regression tests for them.
13386
13387         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13388         use.
13389         (mono_arch_allocate_vars): Fix representation of single-precision float
13390         argument.
13391         (mono_arch_output_basic_block): Ditto.
13392
13393         * inssel-mips.brg: Ditto, remove duplicate items.
13394
13395         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13396         arguments of tail calls as on other platforms.
13397         (mono_arch_output_basic_block): Handle tail calls.
13398
13399         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13400         register.
13401
13402         * objects.cs (test_5_pass_static_struct): Add test for it.
13403
13404         Contributed under MIT/X11 license.
13405
13406 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13407
13408         * Makefile.am: Use gmcs for compiling the regression tests.
13409
13410         * *.2.cs *.2.il: Rename to *.cs and *.il.
13411
13412 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * regalloc.h: Make the vassign array smaller.
13415
13416         * mini.c (mini_method_compile): Remove an unused field in cfg.
13417
13418         * mini-codegen.c: Add a bunch of micro optimizations.
13419
13420 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13421
13422         * regalloc.h: Remove some unused fields.
13423
13424 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13425
13426         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13427
13428         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13429
13430 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13431
13432         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13433
13434         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13435         trampoline: Fetch an entry from the runtime generic context.  If
13436         it's NULL, jump to the actual trampoline to fill the runtime
13437         generic context.  Otherwise, return it.
13438
13439         * mini.c: Call the lazy fetch trampoline to get entries out of the
13440         runtime generic context.
13441
13442         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13443         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13444         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13445
13446 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13447
13448         * mini.c: Fetch data out of the extensible part of the runtime
13449         generic context instead of calling a helper function.
13450
13451         * generic-sharing.c: Some functions moved into
13452         metadata/generic-sharing.c.  Helper function for fetching other
13453         types now checks and asserts against extensible rgctx (just for
13454         debugging purposes - the helper function isn't called anymore
13455         unless for debugging).
13456
13457 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13458
13459         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13460         for tail calls up to the point that the tests in iltests.exe run. Also add a
13461         dummy CKFINITE implementation.
13462         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13463         needed for trampoline LMF frames.
13464
13465         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13466         trampoline LMF frames.
13467
13468 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13469
13470         * mini.c (inline_method): clean any pending loader error when inlining fail.
13471         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13472
13473 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13476
13477         * aot-runtime.c (decode_patch_info): Ditto.
13478
13479         * mini.c (mono_resolve_patch_target): Ditto.
13480         
13481         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13482         icall wrappers.
13483
13484         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13485         
13486         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13487         if it references an icall address.
13488
13489 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13490
13491         * cpu-s390x.md: Remove some more unused opcodes.
13492         
13493         * cpu-s390x.md: Remove some unused opcodes.
13494
13495         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13496         mono_op_imm_to_op ().
13497
13498         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13499         instead of a switch statement.
13500         
13501         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13502         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13503
13504         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13505         
13506         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13507
13508         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13509         -1.
13510
13511 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13512
13513         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13514         opened. Fixes #362607.
13515
13516         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13517
13518         * iltests.il.in: Add a test for static methods in interfaces.
13519
13520 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13521
13522         * genmdesc.c (build_table): Fix a crash on older glib versions.
13523
13524         * cpu-sparc.md: Remove some unused opcodes.
13525         
13526         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13527         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13528
13529         * cpu-amd64.md: Remove some unused opcodes.
13530
13531         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13532         like the other opcodes.
13533
13534 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13535
13536         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13537
13538         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13539
13540         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13541         variables 'cfg' instead of 'm' for consistency.
13542
13543         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13544
13545         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13546         argument holding the vtype return address, to avoid the ambigious use of
13547         cfg->ret for this purpose.
13548
13549         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13550
13551         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13552         
13553         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13554         new mono_print_ins () function which only takes one argument.
13555
13556 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13557
13558         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13559         macro arguments.
13560
13561 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13562
13563         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13564
13565         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13566
13567         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13568         opcodes and other small changes.
13569
13570         * mini-ops.h: Add some new opcodes from the linear IR branch.
13571
13572         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13573
13574         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13575         opcodes, use the REG_MEMBASE opcodes instead.
13576         
13577         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13578         opcodes, use the REG_MEMBASE opcodes instead.
13579         
13580         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13581         linear IR branch.
13582
13583         * mini.c (mono_op_imm_to_op): New helper function.
13584
13585         * mini-ops.h: Add some opcodes from linear IR branch.
13586
13587 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13588
13589         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13590         <tsv@solvo.ru>.
13591
13592 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13595         OP_ICONV_TO_R4/R8.
13596
13597         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13598
13599 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13600
13601         * aot-compiler.c (emit_method_code): Add an assert.
13602
13603         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13604         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13605         methods.
13606
13607 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13608
13609         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13610         some load/store opcodes so they are consistent. 
13611         (mono_arch_emit_prolog): Simplify some code.
13612
13613         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13614
13615         * objects.cs: Add tests for large argument offsets on ARM.
13616
13617         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13618         stack offsets. Fixes #359651.
13619
13620         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13621
13622         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13623
13624         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13625
13626         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13627
13628         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13629
13630         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13631         rid of CEE_CONV_R_UN.
13632
13633         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13634
13635 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13636
13637         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13638
13639         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13640
13641         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13642
13643         * cpu-amd64.md: Remove some unused opcodes.
13644
13645         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13646
13647         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13648
13649         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13650         arch specific functions for its parts. Call the peephole pass after local
13651         regalloc so the prolog can compute a more accurate max_offset.
13652         
13653         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13654         the corresponding OP_I/OP_L opcodes.
13655
13656         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13657
13658         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13659
13660 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13661
13662         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13663         as they are handled in mini.c.
13664
13665         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13666         
13667         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13668         case since it is handled in mini.c.
13669
13670         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13671
13672         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13673
13674         * *.c: Use the new opcodes in the IR and back end code.
13675
13676         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13677
13678         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13679
13680 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13681
13682         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13683         an assert because it has a race condition.
13684
13685 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13686
13687         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13688
13689         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13690
13691         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13692
13693         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13694         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13695
13696 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13697
13698         * cpu-amd64.md (move): Correct the maximum size of move.
13699
13700 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13701
13702         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13703         the generic class init trampoline to return quickly if the class
13704         is already inited.
13705
13706 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13707
13708         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13709         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13710
13711 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13714         branch.
13715
13716 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13717
13718         * objects.cs: Add some soft-float tests.
13719
13720         * mini.c: Fix a couple more soft-float issues.
13721
13722         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13723
13724         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13725         avoid a REX prefix.
13726
13727 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13728
13729         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13730         exception happens while compiling a virtual method.
13731
13732 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13733
13734         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13735         
13736         * mini-sparc.c: Fix build.
13737
13738         * mini-sparc.c (get_call_info): Add support for generic sharing.
13739
13740         * mini-exceptions.c: Add a FIXME.
13741
13742 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13743
13744         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13745         altstack handling code.
13746
13747         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13748         
13749         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13750
13751         * mini-s390.c: Add support for generic sharing.
13752
13753         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13754         Fix CAS on s390.
13755         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13756
13757         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13758
13759         * mini-s390x.c: Add support for generic sharing.
13760         
13761         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13762         Fix CAS on ia64.
13763         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13764
13765         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13766         can be used since it takes a 16 bit signed immediate.
13767
13768         * inssel-s390x.brg: Fix OP_SETRET.
13769
13770         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13771
13772         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13773
13774         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13775
13776         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13777
13778         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13779         in one place.
13780
13781         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13782         stuff.
13783
13784         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13785         of the unused mono_arch_patch_delegate_trampoline stuff.
13786
13787 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13788
13789         * basic-long.cs: Move the fp related tests to basic-float.cs.
13790
13791         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13792
13793         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13794
13795         * basic-calls.cs: Add a test for proper float argument passing.
13796
13797         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13798         if the context corresponds to an exception received through a signal.
13799
13800         * exceptions.cs: Add a test for nullref handling at the start of a try
13801         clause.
13802
13803         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13804
13805         * jit-icalls.c (mono_break): New JIT icall.
13806
13807         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13808
13809         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13810
13811 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13812
13813         * cpu-*.md: Get rid of unused opcodes.
13814
13815         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13816
13817         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13818         by all platforms.
13819
13820         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13821         define.
13822
13823         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13824         the arch independent trampoline code in mini-trampolines.c.
13825
13826         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13827
13828         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13829
13830         * mini-s390.h: Remove an unused define.
13831         
13832         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13833         the arch independent trampoline code in mini-trampolines.c.
13834
13835         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13836
13837 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13840
13841         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13842
13843         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13844
13845         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13846
13847         * cpu-amd64.md: Use smaller sizes for int opcodes.
13848
13849         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13850
13851         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13852         objects.cs.
13853
13854         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13855         debugging.
13856
13857         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13858         instead of though a pointer to save an indirection when accessing elements of
13859         the array.
13860
13861         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13862         some typos.
13863         (NOT_IMPLEMENTED): New helper macro.
13864         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13865         of a bb.
13866
13867         * *.c: Use the new helper macro.
13868
13869 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13870
13871         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13872
13873 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13874
13875         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13876         stack slots.
13877
13878 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13879
13880         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13881         profiling is enabled.
13882         
13883         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13884         the end.
13885         (mono_arch_emit_prolog): Add more first bblock optimizations.
13886
13887         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13888         in order if possible.
13889         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13890         bblock, since the arguments are still in their original registers.
13891
13892         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13893
13894 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13895
13896         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13897         as well.
13898
13899         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13900         offset 0.
13901
13902         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13903
13904         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13905         process async exceptions received while in unmanaged code.
13906
13907         * mini.c (mini_init): Install a callback with the runtime which will be called
13908         when a thread receives an async exception while in unmanaged code.
13909
13910         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13911
13912         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13913
13914 2008-01-16  Wade Berrier  <wberrier@novell.com>
13915
13916         * cpu-g4.md:
13917         * cpu-arm.md:
13918         * cpu-s390x.md:
13919         fix build
13920
13921 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13922
13923         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13924         compilation with sun cc.
13925
13926         * cpu-*.md: Fix the build.
13927
13928         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13929
13930         * mini-amd64.h: Add some comments to the MonoLMF structure.
13931
13932         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13933         
13934         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13935         in the LMF structure if possible. This saves two instructions in the
13936         managed->native wrappers.
13937
13938         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13939
13940 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13941
13942         * generic-sharing.c: New type argument lookup code which uses the
13943         runtime generic context template.
13944
13945 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13948
13949         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13950         (mono_arch_output_basic_block): Fix localloc implementation.
13951
13952         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13953
13954         * mini-ia64.c (peephole_pass): Fix ia64 build.
13955
13956         * mini-amd64.c (peephole_pass): Fix a warning.
13957         
13958         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13959         at a constant offset from sp/fp.
13960
13961         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13962         instead of obtaining it from *lmf in the managed method case.
13963
13964 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13965
13966         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13967
13968 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13969
13970         * mini.h (MonoInstList): New type.
13971         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13972         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13973         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13974         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13975         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13976         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13977         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13978         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13979         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13980         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13981         MONO_INST_LIST_FOR_EACH_ENTRY,
13982         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13983         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13984         mono_inst_list_first, mono_inst_list_last,
13985         mono_inst_list_next, mono_inst_list_prev): New instruction
13986         list handling interfaces.
13987         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13988         list head 'ins_list'.
13989         (MonoInst): Replace next pointer with list head 'node'.
13990         (MonoCallInst): Make 'out_args' a MonoInstList.
13991         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13992         (MonoCompile): Delete reverse_inst_list and
13993         reverse_inst_list_len.
13994         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13995         mono_arch_lowering_pass, mono_arch_local_regalloc,
13996         mono_arch_output_basic_block, mono_arch_emit_prolog):
13997         Convert to new instruction lists.
13998         (insert_after_ins): Delete.
13999         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14000         instruction lists.
14001         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14002         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14003         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14004         mono_emulate_opcode, mono_emit_load_got_addr,
14005         inline_method, mono_method_to_ir, mono_print_bb_code,
14006         print_dfn, decompose_pass, nullify_basic_block,
14007         replace_out_block_in_code, remove_block_if_useless,
14008         merge_basic_blocks, move_basic_block_to_end,
14009         try_unsigned_compare, optimize_branches, mono_print_code,
14010         mini_select_instructions, remove_critical_edges): Likewise.
14011         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14012         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14013         mono_arch_output_basic_block, mono_arch_emit_prolog):
14014         Likewise.
14015         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14016         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14017         mono_arch_output_basic_block): Likewise.
14018         (inst_list_prepend, insert_after_ins): Delete.
14019         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14020         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14021         instruction lists.
14022         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14023         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14024         mono_arch_emit_prolog): Likewise.
14025         * cfold.c (mono_constant_fold): Likewise.
14026         * liveness.c (visit_bb, mono_analyze_liveness,
14027         optimize_initlocals): Likewise.
14028         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14029         * graph.c (mono_draw_code_cfg): Likewise.
14030         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14031         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14032         mono_ssa_cprop): Likewise.
14033         * abcremoval (get_relations_from_previous_bb, process_block):
14034         Likewise.
14035         * local-propagation (mono_cprop_invalidate_values,
14036         mono_local_cprop_bb): Likewise.
14037         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14038         peephole_pass, mono_arch_output_basic_block,
14039         mono_arch_emit_prolog): Likewise.
14040         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14041         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14042         mono_arch_emit_prolog): Likewise.
14043         (insert_after_ins): Delete.
14044         * aliasing.c (print_code_with_aliasing_information,
14045         mono_build_aliasing_information, mono_aliasing_deadce):
14046         Convert to new instruction lists.
14047         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14048         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14049         mono_arch_local_regalloc, mono_arch_output_basic_block):
14050         Likewise.
14051         (insert_after_ins): Delete.
14052         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14053         peephole_pass, mono_arch_output_basic_block): Convert to
14054         new instruction lists.
14055         * mini-codegen (InstList, inst_list_prepend,
14056         insert_after_ins): Delete.
14057         (insert_before_ins, get_register_force_spilling,
14058         get_register_spilling, free_up_ireg, free_up_reg,
14059         create_copy_ins, create_spilled_store, alloc_int_reg,
14060         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14061         to new instruction lists.
14062         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14063         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14064         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14065         (insert_after_ins): Delete.
14066         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14067         mono_arch_local_regalloc, mono_arch_output_basic_block,
14068         mono_arch_call_opcode): Convert to new instruction lists.
14069         (insert_after_ins): Delete.
14070         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14071         peephole_pass, mono_arch_output_basic_block,
14072         mono_arch_emit_prolog): Convert to new instruction lists.
14073
14074 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14075
14076         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14077
14078         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14079         Fixes #353182.
14080
14081         * Makefile.am (version.h): Make this work with non-bash shells.
14082
14083 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14086
14087 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14088
14089         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14090         the InitializeArray optimization.
14091
14092 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14093
14094         * mini.c driver.c: Don't include os/gc_wrapper.h.
14095
14096 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14097
14098         * mini.c (print_jit_stats): Print GC statistics if available.
14099
14100 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14101
14102         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14103
14104 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14105
14106         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14107
14108 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14109
14110         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14111         
14112         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14113
14114         * driver.c (mono_main): Ditto.
14115
14116 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14117
14118         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14119
14120         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14121         in the vtable can't be encoded.
14122         (compile_method): Ditto.
14123
14124 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14125
14126         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14127         defined.
14128
14129         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14130         lmf->rbp.
14131
14132         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14133         the top LMF entry belongs to the current method.
14134
14135         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14136
14137 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14138
14139         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14140         
14141         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14142
14143         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14144
14145         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14146
14147         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14148
14149         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14150         implementation.
14151
14152         * basic-float.cs: Add an ulong->double cast test.
14153
14154 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14155
14156         * mini.c (mono_method_to_ir): Fix a warning.
14157
14158 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14159
14160         * mini-ops.h: Add OP_SWITCH.
14161
14162         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14163         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14164
14165 2007-12-11  Geoff Norton  <gnorton@novell.com>
14166
14167         * mini-s390x.c: Minor change to the MAX() define to allow
14168         it to compile with other gcc versions.
14169
14170 2007-12-11  Geoff Norton  <gnorton@novell.com>
14171
14172         * cpu-s390x.md:
14173         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14174
14175 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14176
14177         exceptions-arm.c (mono_arch_get_restore_context): Restore
14178         the frame pointer.
14179
14180         exceptions-arm.c (throw_exception): Save the frame pointer.
14181         This is a partial fix for #323747. Only the client side is
14182         fixed.
14183
14184 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14185
14186         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14187         was using an unrelated variable to log the class which
14188         needed the cctor to be called. This was crashing on arm.
14189
14190 2007-12-09  Robert Jordan  <robertj@gmx.net>
14191
14192         * mini-x86.c (mono_arch_emit_epilog):
14193         Consider all kinds of 64-bit types. Fixes #323114.
14194
14195 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14198
14199 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14200
14201         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14202
14203 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14204
14205         * mini.c: run type ctor before allocating an object, not only
14206         when running it's constructor method (fixes at least part of bug #342507).
14207
14208 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14209         
14210         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14211         
14212         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14213         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14214         function.
14215
14216         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14217         mono_generic_class_init_trampoline () the same as it is done with the other
14218         trampolines.
14219
14220         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14221         aot-runtime.c aot-compiler.c: Implement AOT support.    
14222
14223 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14224
14225         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14226         build for archs which don't have the vtable trampoline defined
14227         yet.
14228
14229 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14230
14231         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14232
14233         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14234
14235         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14236
14237         * tramp-<ARCH>.c: Use the new helper function.
14238
14239 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14240
14241         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14242         trampoline call, which takes a vtable argument.
14243
14244         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14245         OP_TRAMPCALL_VTABLEs like other calls.
14246
14247         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14248         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14249         call.  Implemented a support function which fetches the vtable
14250         from a register set.
14251
14252         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14253         Implemented a generic class init trampoline, using the
14254         OP_TRAMPCALL_VTABLE opcode.
14255
14256         * mini.c: Implemented static field access when sharing generic
14257         code.  This implies initing the class using the new
14258         OP_TRAMPCALL_VTABLE call.
14259
14260 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14261
14262         * mini.c: Don't compile methods with sharing enabled if their
14263         classes are disabled for sharing.
14264
14265 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14266
14267         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14268         opcodes. Fixes #346563.
14269
14270         * objects.cs: Add a new test.
14271
14272         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14273
14274         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14275         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14276
14277 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14278
14279         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14280
14281 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14282
14283         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14284         code stream.
14285
14286 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14287
14288         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14289
14290         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14291         optimization in the AOT case.
14292         
14293 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14294
14295         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14296         
14297         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14298
14299         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14300
14301         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14302
14303         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14304         is created by the inlined delegate ctor.
14305
14306         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14307
14308         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14309
14310 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14311
14312         * cpu-x86.md: Fix the length of ckfinite.
14313
14314 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14315
14316         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14317         
14318         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14319         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14320
14321         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14322
14323         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14324         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14325
14326 2007-11-28  Martin Baulig  <martin@ximian.com>
14327
14328         * mini-x86.c
14329         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14330         after creating the trampoline.
14331
14332 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14333
14334         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14335
14336         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14337         the same version.
14338
14339         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14340         instead of the calling method to help AOT.
14341
14342         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14343
14344 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14345
14346         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14347         is defined.
14348
14349 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14350
14351         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14352         
14353         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14354         (encode_method_ref): No need to handle generic method definitions specially.
14355
14356         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14357
14358         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14359         decode_klass_info.
14360
14361         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14362         encode_klass_info.
14363         (compile_method): Enable generic sharing.
14364
14365 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14366
14367         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14368         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14369
14370         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14371         generic code.
14372
14373         * mini-trampolines.c: Fix a warning.
14374
14375         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14376         NEW_PCONST.
14377         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14378         (generic_class_is_reference_type): Remove unused function.
14379
14380         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14381         in the generic vtable trampoline case.
14382
14383         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14384         
14385         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14386         return an AOT method based on a vtable slot.
14387
14388         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14389
14390         * mini.c (mini_get_vtable_trampoline): Export this.
14391
14392 2007-11-22  Martin Baulig  <martin@ximian.com>
14393
14394         * debug-debugger.h
14395         (MonoDebuggerInfo): Move `debugger_version' up.
14396
14397 2007-11-22  Martin Baulig  <martin@ximian.com>
14398
14399         * mini-amd64.c
14400         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14401
14402         * mini-trampolines.c
14403         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14404         after compiling the method.
14405
14406 2007-11-20  Martin Baulig  <martin@ximian.com>
14407
14408         * debug-mini.c
14409         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14410         (mono_debugger_remove_breakpoint): Likewise.
14411         (mono_debugger_check_breakpoints): Likewise.
14412
14413         * debug-debugger.c: Implement the new breakpoint interface here.
14414
14415 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14416
14417         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14418         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14419
14420         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14421
14422 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14423
14424         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14425
14426         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14427         mini.c.
14428
14429         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14430         mini.c.
14431
14432         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14433         returning a vtype in a register.
14434
14435         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14436         here from the arch specific code.
14437
14438         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14439         mini.c.
14440
14441         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14442         (mono_arch_emit_prolog): Increment maximum prolog size.
14443
14444         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14445         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14446
14447         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14448         MonoGenericSharingContext.
14449
14450         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14451         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14452
14453 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14454
14455         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14456         which extract fields out of the runtime generic context.  Full
14457         sharing of the NEWARR opcode.
14458
14459 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14460
14461         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14462         --enable-minimal=ssa.
14463
14464 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14465
14466         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14467         mono_marshal_get_delegate_invoke () signature change.
14468
14469 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14470
14471         * mini.c: Removed the shared context in favor of the generic
14472         sharing context.  Allocate the MonoJitInfo structure with room for
14473         the generic sharing context if it's needed.
14474
14475         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14476         domain-internals.h now.
14477
14478         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14479
14480         * generic-sharing.c: Several changes for working without a shared
14481         context and instead operating on open types instead.
14482
14483 2007-11-12  David S. Miller  <davem@davemloft.net>
14484
14485        * inssel-sparc.brg: Fix double instruction emit.
14486
14487 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14488
14489         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14490         Get/Set/Address methods.
14491         
14492         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14493         mono_marshal_get_delegate_invoke signature change.
14494
14495 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14496
14497         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14498         This can happens with dynamic methods. Fixes the other bug in #322722.
14499
14500 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14501
14502         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14503         BX call sequence.
14504
14505         * mini-arm.c (arm_patch): Implement patching of BX call
14506         sequence. Fixes one of the bugs in #322722.
14507
14508 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14509
14510        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14511        under Linux.  We only need to flush every 32-byte cache line.    
14512
14513 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14514
14515         * mini.c:
14516         move_basic_block_to_end: Add branches when needed, eventually creating
14517         a new BB.
14518         optimize_branches: added a parameter that tells if it's ok to create
14519         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14520         and avoid calling move_basic_block_to_end when it's not ok.
14521         Fixes bug 318677.
14522
14523 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14524
14525         * mini.c: Abort inlining call to InitializeArray if something
14526         looks wrong.  Let the icall handle it, which now has proper safety
14527         checks.
14528
14529 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14530
14531         * mini.c (mono_spill_call): add support for soft-float.
14532
14533         * mini.c (mono_method_to_ir): add support for soft-float
14534         to inlined functions that return float.
14535
14536         * mini.c (mono_method_to_ir): add support for soft-float
14537         to cee_stsfld opcode on float fields.
14538
14539 2007-11-05  Geoff Norton  <gnorton@novell.com>
14540
14541         * mini-x86.h: Fix the structure access for X86 Leopard.
14542
14543
14544 2007-11-05  Martin Baulig  <martin@ximian.com>
14545
14546         * mini-trampolines.c
14547         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14548         after compiling the method to notify the debugger.
14549
14550 2007-11-05  Martin Baulig  <martin@ximian.com>
14551
14552         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14553
14554 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14555
14556         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14557         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14558
14559 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14560
14561         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14562         native-to-managed wrappers.
14563         
14564 2007-11-01  Geoff Norton  <gnorton@novell.com>
14565
14566         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14567         members.
14568
14569 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14570
14571         * mini.c, mini-x86.c: when getting back from unmanaged code
14572         to managed via a marshaled delegate we also need to set the
14573         right domain.
14574
14575 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14576
14577         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14578         for amd64.
14579
14580 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14581
14582         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14583         let the debugger or other external agents to tell the JIT when
14584         a sw breakpoint has been inserted in the code that the JIT needs
14585         to be able to inspect.
14586
14587 2007-10-31  Martin Baulig  <martin@ximian.com>
14588
14589         * debug-debugger.h
14590         (MonoDebuggerInfo): Remove `runtime_class_init'.
14591
14592 2007-10-30  Martin Baulig  <martin@ximian.com>
14593
14594         * debug-mini.h
14595         (mono_debugger_thread_created): Added `MonoThread *' argument.
14596         (mono_debugger_extended_notification): New public method.
14597         (mono_debugger_trampoline_compiled): New public method.
14598
14599         * debug-mini.c
14600         (MonoDebuggerThreadInfo): Added `thread' and
14601         `extended_notifications' fields.
14602
14603         * debug-debugger.c
14604         (debugger_executable_code_buffer): New static variable.
14605
14606         * debug-debugger.h
14607         (MonoDebuggerInfo): Added `executable_code_buffer',
14608         `executable_code_buffer_size', `breakpoint_info_area',
14609         `breakpoint_table' and `breakpoint_table_size'.
14610
14611 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14612
14613         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14614         that IP  either is an unused value or the vtable pointer. IMT 
14615         calls use vtable + offset now. Reduced by almost half the size
14616         of IMT entries.
14617
14618 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14619
14620         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14621         defines to access param registers. Replace long usage with
14622         gsize as sizeof(long) != sizeof(void*) on Win64.
14623
14624         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14625         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14626         instead of non-existant _GetAddressOfReturnAddress.
14627
14628         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14629         param registers. Save/restore %rdi and %rsi in MonoLMF.
14630
14631         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14632         param registers. Modify (throw_exception) signature to take 
14633         %rdi and %rsi on Win64. 
14634
14635         Code is contributed under MIT/X11 license.
14636
14637 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14638
14639         * helpers.c: unlink debugging output files.
14640
14641 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14642
14643         * mini.c: Move mono_create_ftnptr () to object.c.
14644
14645 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14646
14647         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14648         optional. This function can now be used to disassemble code generated
14649         outside the JIT such as trampolines and IMT thunks.
14650
14651         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14652
14653         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14654         vtable pointer from a ldr instruction.
14655
14656         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14657         new IMT call sequence.
14658
14659         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14660         call sequence for interface invocations.
14661
14662         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14663         for imt support. This function is empty since IMT on ARM requires no
14664         special handling on the IR side.
14665
14666         * mini-arm.c (mono_arch_find_imt_method): added, required for
14667         imt support.
14668
14669         * mini-arm.c (mono_arch_find_this_argument): added, required
14670         for imt support.
14671
14672         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14673         a ldr instruction to load a value stored in the code stream.
14674
14675         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14676         for imt support.
14677
14678
14679 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14680
14681         * mini.c (mini_init): Install the jump trampoline callback.
14682
14683 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * mini-trampolines.c: handle synchronized methods with the common
14686         vtable trampoline (bug #335601).
14687
14688 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14689
14690         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14691
14692         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14693         64 bit platforms.
14694
14695         * mini-ia64.h mini-ia64.c: Add support for IMT.
14696
14697         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14698         prolog. Fixes #331958.
14699
14700 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14701
14702         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14703
14704 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14705
14706         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14707         trampoline.
14708
14709 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14710
14711         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14712         trampoline.
14713
14714 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14715
14716         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14717         trampoline.
14718
14719 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14720
14721         * mini-trampolines.c: changed the magic rampoline to understand
14722         the common vtable trampoline method: the method to invoke is
14723         determined by the vtable displacement of the call.
14724
14725 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14726
14727         * mini.c, mini.h: register the common vtable trampoline if the
14728         architecture supports it.
14729
14730 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14731
14732         * cpu-amd64.md: use the correct max length for tls_get.
14733
14734 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14735
14736         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14737         CEE_STELEM_ANY. Fixes #333696.
14738
14739 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14740
14741         * exceptions-x86.c: provide more graceful handling of the case where
14742         we followed a bogus function pointer from managed code (bug #332866).
14743
14744 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14745
14746         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14747         replaces the generic_shared flag and will carry more information
14748         in the future.
14749
14750         * generic-sharing.c: Added mini_type_stack_size() which allows
14751         allows open types if given a generic sharing context.
14752         mini_get_basic_type_from_generic() takes a
14753         MonoGenericSharingContext* instead of a MonoCompile* now.
14754
14755         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14756         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14757         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14758         changes above.  Just passing arguments through to the right
14759         places.
14760
14761 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14762
14763         * mini-arm.c: unify the call emission to emit_code_seq().
14764
14765 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14766
14767         * tramp-arm.c: reduced the trampoline size.
14768
14769 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14770
14771         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14772         variable handling out of arch-specific code.
14773
14774 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14775
14776         * mini-arm.c: implemented fast delegate dispatch.
14777
14778 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14779
14780         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14781         that fp elimination is turned off if the space required by locals is too
14782         big. Fixes #331958.
14783
14784 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14785
14786         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14787         ARM to the new style trampoline.
14788
14789 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14790
14791         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14792
14793         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14794
14795 2007-10-09  Martin Baulig  <martin@ximian.com>
14796
14797         * debug-debugger.h
14798         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14799         `field_info_offset_offset'.     
14800
14801 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14802
14803         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14804         removed more internal usage of the r11 register and made it available
14805         to the register allocator.
14806
14807 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14808
14809         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14810         when sharing generics and treat type variables as references.
14811
14812 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14813
14814         * mini-ppc.c: started removing the internal uses of register r11
14815         to eventually allow the register allocator to manage it as an
14816         additional available register.
14817
14818 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14819
14820         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14821
14822 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14823
14824         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14825         specific trampolines as they are not performance critical as a jump
14826         target (maybe align as before only for AOT code?). This saves about
14827         200 KB of native code on x86 for monodevelop startup.
14828
14829 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14830
14831         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14832         monodevelop startup.
14833
14834 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14835
14836         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14837
14838         * mini-sparc.h mini-sparc.c: Implement IMT support.
14839
14840         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14841         its smaller and doesn't clobber sparc_g1.
14842
14843         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14844
14845 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14846
14847         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14848
14849 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14850
14851         * mini-ppc.c: implemented fast delegate invocation.
14852
14853 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14854
14855         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14856
14857 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14858
14859         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14860         code to the new style trampoline in preparation for IMT support.
14861
14862 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14863
14864         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14865         systems already. This also reduces the specific trampiline sizes and
14866         prepares for the use of r12 as the IMT identifier register.
14867
14868 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14869
14870         * mini-mips.h: endianess fix (simplified from a patch by
14871         Thomas Kunze <thommy@tabao.de>, bug #323737).
14872
14873 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14874
14875         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14876         to access ucontext fields and enable netbsd support
14877         (partially from Magnus Henoch <mange@freemail.hu>).
14878
14879 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14880
14881         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14882         use the preprocessor from the CPP env var if it is set.
14883
14884 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14885
14886         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14887         code, before interface_offset gets used.
14888
14889 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14890
14891         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14892         mono_class_setup_vtable () before accessing klass->vtable.
14893
14894 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14895
14896         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14897         hackish.
14898
14899 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14900
14901         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14902         IMT slots (this saves hundreds of KB of memory in programs like
14903         IronPython and Monodevelop).
14904
14905 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14906
14907         * mini.c: print the delegate counter.
14908
14909 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14910
14911         * mini-x86.c: make it easier to enable the debugging code for IMT
14912         slots.
14913
14914 2007-09-28  Martin Baulig  <martin@ximian.com>
14915
14916         * debug-debugger.h
14917         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14918         `mono_method_klass_offset' and `mono_method_token_offset'.
14919
14920 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14921
14922         * mini.c: First generics sharing implementation.  Can only share
14923         in very simple cases.  If sharing doesn't work it falls back to
14924         dedicated compilation.
14925
14926         * mini.h: Flag in MonoCompile to specify whether generic
14927         compilation is shared.  Flags enum for marking which generic inst
14928         of a context is used.  Prototypes for helper functions.
14929
14930         * generic-sharing.c: Helper functions for generic method sharing.
14931
14932         * optflags-def.h: Optimization flag (gshared) for enabling generic
14933         method sharing added.
14934
14935         * Makefile.am: generic-sharing.c added.
14936
14937 2007-09-19 Daniel Nauck <dna@mono-project.de>
14938
14939         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14940
14941 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14942         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14943         fixes bug 325507.
14944
14945 2007-09-19  Martin Baulig  <martin@ximian.com>
14946
14947         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14948         mono_debug_cleanup() is now part of mono_cleanup().
14949
14950 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14951
14952         * driver.c (mono_main): Fix a warning.
14953
14954 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14955
14956         * aot-compiler.c: Optimize various parts when processing large assemblies.
14957         Fixes ##325568.
14958
14959         * mini.c (mono_patch_info_hash): Improve hash function.
14960
14961 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14962
14963         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14964         
14965         Code is contributed under MIT/X11 license.
14966
14967 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14968
14969         * mini.c (mini_init): Fix a leak.
14970
14971         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14972
14973 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14974
14975         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14976
14977 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14978
14979         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14980
14981 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14982
14983         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14984         variance tests.
14985
14986         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14987
14988         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14989
14990         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14991
14992         * aot-runtime.c (decode_patch_info): Ditto.
14993
14994 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14995
14996         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14997         static case. Cache delegates in architecture specific code, 
14998         based on number of parameters.
14999         
15000         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15001         in architecture specific code, based on number of parameters.
15002         
15003         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15004         caching happen in architecture specific code now.
15005         
15006         Code is contributed under MIT/X11 license.
15007
15008 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15009
15010         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15011         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15012         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15013
15014         Code is contributed under MIT/X11 license.
15015
15016 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15017         * mini.c: (mono_thread_abort) Fixed bug #82416.
15018
15019 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15020
15021         * mini.: hook the new managed GC allocation feature into the JIT.
15022
15023 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15024
15025         * mini.c: implementation for the new runtime tls opcode.
15026
15027 2007-09-11  Martin Baulig  <martin@ximian.com>
15028
15029         * debug-debugger.h
15030         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15031         `mono_method_inflated_offset'.
15032
15033 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15034
15035         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15036         async exceptions into a method.
15037
15038         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15039         purpose of testing whenever the unwinder works at every instruction.
15040
15041 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15042
15043         * mini.c: check accessibility of method used in ldftn (fixes
15044         bug #82635).
15045
15046 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15047
15048         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15049
15050         * inssel.brg: Fix a warning.
15051
15052 2007-09-03  Martin Baulig  <martin@ximian.com>
15053
15054         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15055         now takes the `main_method' as argument.
15056
15057 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15058
15059         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15060
15061 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15062
15063         * driver.c: include the cil-coff.h header on Windows.
15064         
15065         Code is contributed under MIT/X11 license.
15066
15067 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15068
15069         * mini.c, driver.c: don't include the cil-coff.h header.
15070
15071 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15072
15073         * mini.c: flag places that needs fixes fo soft-float support.
15074
15075 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15076
15077         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15078         endian systems (partially from Dean Jenkins, bug #81924).
15079
15080 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15081
15082         * mini.c (check_linkdemand): Remove embedded reference object in
15083         call to LinkDemandSecurityException.
15084         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15085         with an IntPtr instead of a reference object.
15086
15087 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15088
15089         * mini.c (handle_initobj): Handle alignment properly.
15090
15091         * inssel.brg (mini_emit_memset): Ditto. 
15092
15093         * inssel.brg (mini_emit_memcpy): Ditto. 
15094
15095         * inssel-sparc.brg: Ditto.              
15096
15097         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15098
15099 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15100
15101         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15102         exceptions raised in unmanaged code. Fixes part of #82594.
15103
15104 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15105
15106         * mini.c (mono_method_to_ir), declsec.c
15107         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15108
15109 2007-08-22  Martin Baulig  <martin@ximian.com>
15110
15111         * debug-mini.h
15112         (MonoDebuggerThreadInfo): New typedef.
15113         (mono_debugger_thread_table): New global variable.
15114         (mono_debugger_thread_created): New public function.
15115         (mono_debugger_thread_cleanup): New public function.
15116
15117         * debug-debugger.h
15118         (MonoDebuggerInfo):
15119         - removed `get_current_thread' and `lookup_assembly'.
15120         - removed `data_table'.
15121         - added `thread_table'.
15122
15123         * mini.c
15124         (mono_thread_start_cb): Call mono_debugger_thread_created().
15125         (mono_thread_attach_cb): Likewise.
15126         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15127         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15128         initial domain.
15129
15130         * driver.c (mono_main): Move mono_debug_init() up, before calling
15131         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15132
15133 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15134
15135         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15136         together when passing several arguments of type double (gives a small
15137         speedup and saves a few bytes of generated code).
15138
15139 2007-08-20  Jb Evain  <jbevain@novell.com>
15140
15141         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15142
15143 2007-08-20  Jb Evain  <jbevain@novell.com>
15144
15145         * mini.c (mono_method_to_ir): throw MethodAccessException
15146         and FieldAccessException instead of InvalidProgramException.
15147
15148 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15149
15150         * mini.c: CoreCLR security checks.
15151
15152         * mini.h: Removed MonoSecurityMode (moved to
15153         metadata/security-manager.h) and mono_security_mode global var
15154         (replaced by set/get functions in security-manager.h).
15155
15156         * driver.c: Added "core-clr-test" security mode for testing.  Used
15157         set-function for setting security mode.
15158
15159 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15160
15161         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15162         the new jit_info_table.
15163
15164         * driver.c: Test code for the new jit_info_table (enabled by the
15165         define MONO_JIT_INFO_TABLE_TEST).
15166
15167 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15168
15169         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15170         detection of call <REG> instruction sequence. Fixes build on freebsd.
15171
15172 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15173
15174         * mini-exceptions.c: Fix a warning.
15175
15176 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15177
15178         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15179         stack overflow handling code on amd64 too.
15180
15181         * mini-exceptions.c (mono_setup_altstack): Make this use 
15182         mono_thread_get_stack_bounds ().
15183
15184         * mini-x86.h: Disable sigaltstack on solaris x86.
15185
15186 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15187
15188         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15189
15190 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15191
15192         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15193
15194 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15195
15196         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15197
15198         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15199
15200 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15201
15202         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15203         due to alignment.
15204
15205 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15206
15207         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15208         to be emitted (bug #82281).
15209
15210 2007-08-01  Martin Baulig  <martin@ximian.com>
15211
15212         Merged the `debugger-dublin' branch.
15213
15214         * debug-debugger.h (MonoDebuggerInfo):
15215         Removed the `old_*' compatibility entries.
15216         Added `debugger_version' and `data_table'.
15217         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15218         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15219
15220         * debug-mini.c
15221         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15222         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15223         instead of a `gconstpointer'.
15224         (mono_debugger_insert_method_breakpoint): Return a
15225         `MonoDebugMethodAddressList *'.
15226
15227 2007-06-28  Martin Baulig  <martin@ximian.com>
15228
15229         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15230
15231 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15232
15233         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15234         __builtin_frame_address () since it is broken on older gcc versions.
15235
15236 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15237
15238         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15239         on the stack overflow handling and made the managed stack overflows
15240         catchable in most cases using soft guard pages.
15241         * exceptions-x86.c: added code to restore the protection in the soft
15242         guard pages at the end of exception handling.
15243
15244 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15245
15246         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15247
15248 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15249
15250         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15251         exception handling.
15252
15253 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15254
15255         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15256         signal handling support until it has been ported to the new mechanism.
15257         * mini.c: fixed stack overflow detection and use the new
15258         architecture code  to handle signals on the altstack.
15259
15260 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15261
15262         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15263         stack overflows on the alt stack.
15264
15265 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15266
15267         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15268         stack overflows on the alt stack.
15269
15270 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15271
15272         * exceptions-ppc.c: cleanup preparing for altstack support.
15273
15274 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15275
15276         * exceptions-arm.c: cleanup preparing for altstack support.
15277
15278 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15279
15280         * mini.c (print_jit_stats): Output hazard pointer stats.
15281
15282 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15283
15284         * driver.c, mini.c: Replaced security mode flags with a single
15285         enum variable.
15286
15287 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15288
15289         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15290
15291 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15292
15293         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15294         (which doesn't do anything yet) for activating Core CLR
15295         (Silverlight) security.
15296
15297 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15298
15299         * mini-codegen.c: work around a possible gcc bug on arm.
15300
15301 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15302
15303         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15304         message for platforms that don't support AOT compilation.
15305
15306 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15307
15308         * mini.h, mini.c, driver.c: temporary smcs hack.
15309
15310 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15311
15312         * mini-arm.h, mini-arm.c: arm EABI fixes.
15313
15314 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15315
15316         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15317         case.
15318
15319         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15320         trampolines taking a method argument.
15321
15322         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15323
15324         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15325         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15326
15327         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15328         JIT compilation throws an exception. Fixes #82050.
15329
15330 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15331
15332         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15333         with the MONO_EXCEPTION_ defines.
15334
15335 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15336
15337         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15338         #82117.
15339         
15340         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15341         the cause of an assertion.
15342
15343 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15344
15345         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15346         removed.
15347
15348 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15349
15350         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15351         assert. Should fix #82103.
15352
15353 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15354
15355         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15356         here too. Fixes #82095.
15357
15358         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15359         addresses.
15360
15361         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15362
15363         * mini-amd64.h: Enable IMT for amd64.
15364         
15365         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15366
15367 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15368
15369         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15370
15371 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15372
15373         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15374         as soon as check_linkdemand sets an exception_type.
15375
15376 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15377
15378         * mini-x86.c: fixed offsets for IMT call sequence.
15379         * mini-x86.h: enable IMT again.
15380
15381 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15382
15383         * trace.c (mono_trace_enter_method): Decode MonoType too.
15384
15385         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15386
15387         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15388
15389         * mini-amd64.c: Add preliminary IMT implementation.
15390         
15391 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15392
15393         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15394         understand the new IMT-base interface invocation (thanks to
15395         Daniel Nauck for the report and the remote debugging session).
15396
15397 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15398
15399         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15400
15401 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15402
15403         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15404
15405 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15406
15407         * mini-trampolines.c: implement AOT IMT support.
15408         * mini-x86.h: enable IMT support for wider testing.
15409
15410 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15411
15412         * inssel.brg (emit_imt_argument): Add aot support here.
15413
15414         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15415
15416 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15417
15418         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15419         of the IMT implementation, partially from massi, with my
15420         implementation of the bsearch sequence. Disabled by default until
15421         the AOT code is implemented.
15422
15423 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15424
15425         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15426
15427         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15428
15429 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15430
15431         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15432         arch-independent IMT JIT code from Massimiliano
15433         Mantione (massi@ximian.com) with small cleanups from me.
15434
15435 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15436
15437         * Makefile.am: fix svn invocation to get the svn revision to be
15438         independent of the local language (build fix).
15439
15440 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15441
15442         * mini.c (inline_method): Reset cfg->exception_type if the
15443         inlining is aborted.  Fixes: 82049.
15444
15445 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15446
15447         * mini.c: remove assert from exception handling code when exception_ptr
15448         is not set.
15449
15450 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15451
15452         * mini.c (mono_codegen): Add an assert.
15453
15454         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15455         enter and leave code.
15456         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15457
15458 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15459
15460         * mini-ppc.c: fixed memory corruption for localloc(0)
15461         (bug #81852).
15462
15463 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15464         
15465         * mini.c: Fix warnings.
15466
15467 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15468
15469         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15470         to emit better double->int conversions.
15471
15472 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15473
15474         * mini.c: the provided Min/Max optimizations are valid for unisgned
15475         ints.
15476
15477 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15478
15479         * 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
15480
15481 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15482
15483         * mini.c (mono_running_on_valgrind): Add support for reporting the
15484         method and  its boundaries to valgrind.
15485
15486 2007-06-28  Martin Baulig  <martin@ximian.com>
15487
15488         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15489
15490 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15491
15492         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15493
15494         * generic.2.cs: Add new test case.
15495
15496 2007-06-25  Martin Baulig  <martin@ximian.com>
15497
15498         Merged the `debugger-dublin' branch.
15499
15500         * debug-mini.c
15501         (mono_debugger_insert_method_breakpoint): New public method.
15502         (mono_debugger_remove_method_breakpoint): Likewise.
15503         (mono_debugger_check_breakpoints): New static method.
15504         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15505
15506         * debug-debugger.h (MonoDebuggerInfo):
15507         Renamed (to keep backward compatibility in the vtable):
15508         `insert_breakpoint' -> `old_insert_breakpoint'.
15509         `remove_breakpoint' -> `old_remove_breakpoint'.
15510         `create_string' -> `old_create_string'.
15511         `lookup_class' -> `old_lookup_class'.
15512         `lookup_type' -> removed; changed into a dummy field.
15513         `lookup_assembly' -> `old_lookup_assembly'.
15514         Added (same functionality, but different signature):
15515         `create_string', `lookup_class', `lookup_assembly'
15516         Added new:
15517         `get_method_addr_or_bpt', `remove_method_breakpoint',
15518         `runtime_class_init'.
15519
15520         * debug-debugger.c: Merged the `debugger-dublin' branch.
15521
15522 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15523
15524         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15525         well.
15526         (peephole_pass): Likewise.
15527
15528 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15529
15530         * driver.c: hopefully make setaffinity work also for ancient
15531         versions of linux.
15532
15533 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15534
15535         * driver.c : win32 build fix.
15536
15537 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15538
15539         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15540         processor if it is set.
15541
15542 2007-06-21  Martin Baulig  <martin@ximian.com>
15543
15544         * debug-mini.h: New file.
15545
15546         * debug-mini.c
15547         (mono_debugger_insert_breakpoint_full): Moved here from
15548         ../metadata/mono-debug-debugger.c.
15549         (mono_debugger_remove_breakpoint): Likewise.
15550         (mono_debugger_breakpoint_callback): Likewise.
15551
15552 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15553
15554         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15555         changes in MonoGenericClass.
15556
15557 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15558
15559         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15560
15561 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15562
15563         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15564         removal of MonoGenericMethod.
15565
15566 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15567
15568         * mini-exceptions.c: hooks for the exception events profiling API.
15569
15570 2007-06-14  Randolph Chung  <tausq@debian.org>
15571
15572         * Makefile.ma: Add hppa target.
15573         * mini-arch.h: Include mini-hppa.h
15574         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15575         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15576         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15577
15578 2007-06-14  Randolph Chung  <tausq@debian.org>
15579
15580         * inssel.brg: Add rules for "chained" compare-branch operations so that
15581         a single compare op can affect multiple branches.  Adjust cost for
15582         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15583         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15584         cost for some rules so that they can more easily be overridden by
15585         per-arch rules (with fixes from lupus).
15586         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15587
15588 2007-06-13  Randolph Chung  <tausq@debian.org>
15589
15590         * mini-ops.h: Reorder branch ops so that they match the order of the
15591         corresponding CEE_* ops.  The code expects them this way.
15592         Add new ops for HPPA target.
15593         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15594
15595 2007-06-13  Randolph Chung  <tausq@debian.org>
15596
15597         * mini-exceptions.c: Handle cases where the stack grows towards
15598         larger addresses.
15599         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15600
15601 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15602
15603         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15604         counter.
15605         * driver.c: explain where a non-matching corlib is found.
15606
15607 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15608
15609         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15610
15611 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15612
15613         * mini-exceptions.c: Generate a method profile leave event during
15614         an exception to ensure that the profiler gets notified.
15615
15616 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15617
15618         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15619         branch.
15620
15621         * cpu-amd64.md: Add long_and/or/xor opcodes.
15622
15623 2007-06-06  Wade Berrier  <wberrier@novell.com>
15624
15625         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15626         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15627         length of instruction shr_imm (expected 8, got 10)
15628
15629 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15630
15631         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15632
15633 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15634
15635         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15636         MonoInternalHashTable again (fixed bug in the internal hash table
15637         code).
15638
15639 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15640
15641         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15642         Have to figure out what makes it crash the SWF regression.
15643
15644 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15645
15646         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15647
15648 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15649
15650         * mini.c: optimize out the type check when storing null in a
15651         reference array.
15652
15653 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15654
15655         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15656         MonoInternalHashTable.
15657
15658 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15659
15660         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15661         signed integer methods.
15662
15663 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15664
15665         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15666         permanently since the current approach doesn't work.
15667
15668 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15669
15670         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15671         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15672
15673 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15674
15675         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15676         the sreg2==rdx case.
15677         
15678         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15679         account if it contains a rex prefix.
15680         (peephole_pass): Handle OP_FMOVE as well.
15681
15682 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15683
15684         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15685         as it causes regressions.
15686
15687 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15688
15689         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15690         static case as well.
15691
15692         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15693
15694         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15695         (mono_arch_get_this_arg_from_call): Ditto.
15696
15697         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15698
15699         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15700         invoke_impl field.
15701
15702         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15703         (mono_arch_get_this_arg_from_call): Ditto.
15704
15705         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15706         
15707         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15708         try to create optimized invoke code and use that for further invocations. 
15709         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15710
15711         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15712
15713 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15714
15715         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15716         sealed classes or methods.
15717         *devirtualization.cs: tests for the new optimization
15718
15719 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15720
15721         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15722         by the update_volatile () function.
15723
15724 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15725
15726         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15727         require it.
15728
15729         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15730
15731 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15732
15733         * mini.c: Add configure checks for header files.
15734         * mini-x86.c: Add configure checks for header files.
15735         * trace.c: Add configure checks for header files.
15736         * aot-runtime.c: Add configure checks for header files.
15737         * aot-compiler.c: Add configure checks for header files.
15738         * driver.c: Add configure checks for header files.
15739         * mini-codegen.c: Add configure checks for header files.
15740         
15741         Code is contributed under MIT/X11 license.
15742
15743 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15744
15745         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15746         icompare_imm -128 + op_iclt. Fixes #81703.
15747
15748 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15749
15750         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15751
15752 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15753
15754         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15755         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15756         so that all isinst checks now use "interface_bitmap".
15757
15758 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15759
15760         * cpu-amd64.md (jmp): Fix a warning.
15761
15762         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15763
15764         * basic.cs: Add new regression test.
15765
15766         * basic.cs: Remove test which is now in basic-long.cs.
15767
15768         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15769
15770         * basic-long.cs: Add new test.
15771         
15772 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15773
15774         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15775
15776 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15777
15778         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15779
15780         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15781         places.
15782         
15783         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15784         throwing code a bit.
15785
15786         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15787         the exception throwing code a bit.
15788
15789         * mini-x86.c (get_call_info): Allocate result from a mempool.
15790
15791 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15792
15793         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15794
15795         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15796
15797         * mini.h (MonoCompile): Add 'token_info_hash' field.
15798
15799         * mini.c: Save token->method associations during compilation so the AOT 
15800         compiler can use it.
15801         
15802         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15803         which reference generic classes and methods.
15804
15805 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15806
15807         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15808
15809         * aot-compiler.c (compile_method): Fix a typo in a comment.
15810
15811         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15812
15813         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15814         everything generic.
15815
15816         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15817
15818 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15819
15820         * mini.h (MonoCompile): Add 'args' field.
15821
15822         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15823         into cfg->args.
15824
15825         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15826
15827 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15828
15829         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15830
15831         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15832
15833         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15834         opcodes for some opcodes.
15835
15836         * mini.h *.brg *.c: Use the new opcodes.
15837
15838 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15839
15840         * mini.h: Bumped aot revision.
15841
15842         * inssel.brg: modified code generation of type checks for interfaces
15843         to use the new "MonoClass.interface_bitmap" instead of the old
15844         "MonoClass.interface_offsets".
15845
15846 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15847
15848         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15849
15850 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15851
15852         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15853         64 bit platforms.
15854
15855 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15856
15857         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15858
15859 2007-04-27  Wade Berrier  <wberrier@novell.com>
15860
15861         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15862         mini.h) to fix build.
15863
15864 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15865
15866         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15867         
15868         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15869         causes the corlib unit tests to fail.
15870
15871 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15872
15873         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15874
15875         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15876
15877         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15878         opcodes to the comparison relations.
15879
15880         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15881         opcodes to their types.
15882         
15883         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15884
15885         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15886         it in cfg->arch.cinfo.
15887
15888         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15889
15890         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15891         cfg->cil_offset_to_bb.
15892
15893 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15894
15895         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15896         created becase of initlocals.
15897
15898 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15899
15900         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15901         Sergey Tikhonov <tsv@solvo.ru>.
15902
15903 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15904
15905         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15906
15907 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15908
15909         * cpu-s390.md (break): Correct the length of break instruction.
15910
15911 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15912
15913         * mini.c: fix a couple of soft-float issues and comments.
15914
15915 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15916
15917         * trace.c (is_filenamechar): - is also a filename char.
15918
15919 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15920
15921         * mini-s390.c: Correct checking for enum type in return value processing.
15922
15923 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15924
15925         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15926         (version.h): Makefile is in the build directory.
15927
15928 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15929
15930         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15931
15932 2007-04-11  Martin Baulig  <martin@ximian.com>
15933
15934         * mini.c (can_access_member): Fix handling of generic classes;
15935         fixes #81259.
15936
15937 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15938
15939         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15940
15941 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15942
15943         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15944
15945 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15946
15947         * mini-codegen.c: make sure the right spill amount is
15948         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15949
15950 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15951
15952         * mini-ppc.c: fixes for the fp_branch_nan test.
15953
15954 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15955
15956         * basic.cs: Comment out new test which still fails on ia64.
15957
15958 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15959
15960         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15961
15962 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15963
15964         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15965
15966 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15967
15968         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15969         on 64 bit machines. Fixes part of #80738.
15970
15971         * basic.cs: Add regression test.
15972
15973 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15974
15975         * inssel.brg basic.cs: Revert previous change to fix build.
15976
15977         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15978         platforms.
15979         
15980         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15981
15982         * basic.cs: Add new regression test.
15983
15984 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15985
15986         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15987         many arguments.
15988
15989 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15990
15991         * cpu-s390x.md: Correct length of break instruction.
15992
15993 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15994
15995         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15996         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15997
15998 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15999
16000         * *.c: Begin WIN64 port.
16001         * mini.c:  Use correct register in profiler.
16002         * mini-amd64.c: No inline assembly on Win64.
16003         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16004         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16005         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16006         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16007         mono_arch_ip_from_context for Win64.
16008         
16009         Contributed under MIT/X11 license.
16010
16011 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16012
16013         * exceptions-amd64.c (seh_handler): Ditto.
16014
16015         * exceptions-x86.c (seh_handler): Fix a memory leak.
16016
16017 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16018
16019         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16020         mini-s390x.c: fixed peephole optimizations to deal
16021         correctly with 1 and 2 byte reload avoidance.
16022
16023 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16024
16025         * cpu-s390.md, cpu-s390x.md: update localloc length.
16026
16027 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16028
16029         * cpu-g4.md: added missing descriptions.
16030
16031 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16032
16033         *  Makefile.am: Add support so the tail tests are not executed on
16034         PowerPC as that is a known limitation of the PowerPC port.
16035
16036 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16037
16038         * runmdesc.bat:  Move to msvc directory.
16039         
16040 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16041
16042         * runmdesc.bat:  Run executable that was produced by the current
16043         target and sent via an argument.
16044         
16045 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16046
16047         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16048         #81102.
16049
16050         * generics.2.cs: Add regression test.
16051
16052 2007-03-09  Wade berrier  <wberrier@novell.com>
16053
16054         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16055
16056 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16057
16058         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16059         AOT code depends on this.
16060
16061 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16062
16063         * mini.c: more precise tracking of types in the eval stack
16064         (part of fix for bug #81044).
16065
16066 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16067
16068         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16069
16070         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16071
16072 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16073
16074         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16075
16076         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16077
16078 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16079
16080         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16081         a pointer on 64 bit systems. Fixes #80190.
16082
16083         * iltests.il: Add new regression test.
16084
16085 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16086
16087         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16088
16089 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16090
16091         * trace.c: Remove an erroneous alignemnt check when tracing.
16092           Fixes --trace on OSX86.
16093
16094 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16095
16096         * mini-$(arch).h: initialize SP in context for all the archs.
16097
16098 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16099
16100         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16101         regressions in the thread tests.
16102
16103 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16104
16105         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16106         - fixed implementation of LOCALLOC opcode
16107         - implemented non-un compare for floats
16108         - code cleanup
16109         - implementation of FDIV and CKFINITE opcodes
16110         - fixes for latest mono updates
16111         - additional arch opcodes
16112
16113 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16114
16115         * Makefile.am: simplify and merge rules for cross-compilation.
16116
16117 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16118
16119         * local-propagation.c: Actually *apply* the fix for bug 80591...
16120
16121 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16122
16123         * mini-exceptions.c: backuot part of the last change
16124         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16125
16126 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16127         * inssel.brg: Fix bug 59286.
16128
16129
16130 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16131
16132         * mini-exceptions.c: patch from Zoltan to correctly check for
16133         stack boundaries (using the stack register, not the frame register),
16134         fixes bugs #80724, #79717.
16135
16136 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16137
16138         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16139         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16140
16141         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16142         presence of frame pointer elimination.
16143
16144 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16145         
16146         * mini-x86.h: NetBSD UCONTEX_REG defines.
16147
16148 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16149
16150         * inssel-amd64.brg: Fix amd64 build.
16151
16152 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16153
16154         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16155         on amd64.
16156
16157 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16158
16159         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16160         ends.
16161
16162         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16163
16164 2007-01-30 Mark Mason <mason@broadcom.com>
16165
16166            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16167            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16168            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16169            beginning support for CEE_JMP [not quite working yet]
16170            * tramp-mips.c: LMF handling now works
16171         
16172 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16173
16174         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16175
16176         * mini.h (NULLIFY_INS): New macro.
16177
16178 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16179
16180         * mini.c: statistical profiler fix for windows, patch
16181         from Tor Lillqvist (tml@novell.com).
16182
16183 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16184         * local-propagation.c: Fix bug 80591.
16185
16186 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16187
16188         * Makefile.am: put back the --export-dynamic option as with
16189         the previous gmodule flags (thanks to Robert Jordan).
16190
16191 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16192
16193         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16194
16195         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16196         simplify and speed up the local register allocator. Also rename some fields
16197         like iassign->vassign.
16198         
16199         * regalloc.c: Remove some functions which are no longer used since their
16200         inlined version is in mini-codegen.c.
16201         
16202         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16203
16204         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16205
16206 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16207
16208         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16209         narrowing. Fixes #80622.
16210
16211         * iltests.il: Add new regresssion test. 
16212
16213 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16214
16215         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16216         debug-debugger.c, debug-debugger.h: warning fixes.
16217         * driver.c: updated copyright year and made it fit in one line.
16218
16219 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16220
16221         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16222
16223 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16224
16225         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16226
16227         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16228
16229         * iltests.il: Add new test for bug #80507.
16230
16231 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16232
16233         * mini-arm.h: use soft-float also on vfp for now.
16234
16235 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16236
16237         * mini.c: fix some more soft-float issues.
16238
16239 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16240
16241         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16242
16243 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16244         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16245         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16246         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16247
16248 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16249
16250         * mini-arm.c: typo fix.
16251
16252 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16253
16254         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16255
16256 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16257
16258         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16259         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16260
16261         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16262
16263         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16264
16265         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16266         
16267         * inssel.brg: Fix a warning.
16268
16269         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16270
16271         * abcremoval.c ssa.c ssapre.c: Update after this change.
16272         
16273         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16274
16275         * dominators.c (df_set): Use mono_bitset_union_fast.    
16276
16277 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16278
16279         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16280         mini-codegen.c: reduce relocations and memory usage for the cpu
16281         description.
16282
16283 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16284
16285         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16286
16287         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16288         to reduce their size.
16289
16290 2007-01-19 Mark Mason <mason@broadcom.com>
16291
16292         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16293         * mini-mips.c: more configuration macros, support long conditional branches, additional
16294         asserts, fix epilog instrumentation.
16295         * mini-mips.h: use standard stack walk
16296         * cpu-mips.md: increase size of div, rem and conditional branches
16297         
16298 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16299
16300         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16301         to cpu spec data.
16302
16303 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16304
16305         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16306         (compile_method): Ditto.
16307
16308         * aot-runtime.c (decode_klass_info): Ditto.
16309
16310         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16311         needed by the code generated by inssel.brg. Also fix a warning.
16312
16313 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16314
16315         * mini.c: deal with enums that become genericinsts by
16316         being nested in a generic class (bug #79956).
16317
16318 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16319
16320         * mini.c: match the generic definition to check for
16321         private access with generic types (bug #78431).
16322
16323 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16324
16325         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16326         to make life easier for people cross-compiling that insist on not
16327         using scratchbox.
16328
16329 2007-01-17 Mark Mason <mason@broadcom.com>
16330
16331         * inssel-long.brg: patch to deal with mips missing flags
16332         * inssel-long32-mips.brg: implement overflow checks
16333         * insset-mips.brg: implement overflow checks
16334         * mini-mips.h: implement conditional exception handling
16335         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16336           Remove unused code, minor cleanups.
16337         * exceptions-mips.c: minor cleanups
16338         * mini-ops.h: add mips conditional exception ops
16339         * cpu-mips.md: add mips conditional exception ops
16340
16341         
16342 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16343
16344         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16345         to deal with mips missing of flags.
16346
16347 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16348
16349         * exceptions-ppc.c: execute fault handlers.
16350
16351 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16352
16353         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16354
16355 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16356
16357         * mini.c: handle also floating point values in initialize_array.
16358
16359 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16360
16361         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16362         array initialization and make it conditional on the intrins option.
16363
16364 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16365
16366         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16367         relocations and put the patch info names close to the enum definition.
16368
16369 2007-01-15 Mark Mason <mason@broadcom.com>
16370
16371         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16372
16373 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16374
16375         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16376
16377 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16378
16379         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16380
16381 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16382
16383         * Makefile.am: distribute the mips sources.
16384
16385 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16386
16387         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16388         directly.
16389
16390 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16391
16392         * cpu-x86.md: back out for now as this triggers other regressions.
16393
16394 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16395
16396         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16397         to eax:edx, so ecx can't get allocated to them (bug #80489).
16398
16399 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16400
16401         * mini.c, mini-exceptions.c: enabled running fault handlers
16402         (bug #80469).
16403
16404 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16405
16406         * driver.c: If nothing fail, do not use the string "failed",
16407         because it makes it very annoying to view test result logs on the
16408         web. 
16409
16410 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16411
16412         * debug-debugger.c (mono_debugger_main): Rename "main" to
16413         "main_method" to prevent a warning.
16414
16415         Remove a warning for unused field.
16416
16417 2006-12-28  Martin Baulig  <martin@ximian.com>
16418
16419         * debug-debugger.c
16420         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16421
16422 2006-12-22  Martin Baulig  <martin@ximian.com>
16423
16424         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16425         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16426         seperate `.mdb_debug_info' section, so we can access it from the
16427         debugger even if the binary is stripped.
16428
16429         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16430         from the `.mdb_debug_info' here to prevent the linker from
16431         removing that section.
16432
16433         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16434         mdb-debug-info64.s.
16435
16436 2006-12-19  Robert Jordan  <robertj@gmx.net>
16437
16438         * mini-x86: enable the code to return small structures in
16439         registers for FreeBSD as well. Fixes bug #80278.
16440         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16441
16442 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16443
16444         * mini-x86.c: align the stack when calling the profiler
16445         function instrumenting the prolog (on OSX).
16446
16447 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16448
16449         * mini.c: emit a break opcode where Debugger.Break () is called.
16450
16451 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16452
16453         * mini.c (mono_method_to_ir): Provide useful information on this
16454         assert, to prevent others from debugging like I did.
16455
16456 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16457
16458         * mini.c: enable code which was incorrectly commented
16459         (bug #80235).
16460
16461 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16462
16463         * mini-x86.c: enable on OSX, too, the code to return small
16464         structures in registers.
16465
16466 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16467
16468         * mini-x86.c: remove the use of the dynamic code manager here, too.
16469
16470 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16471
16472         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16473         mono_debugger_create_notification_function() to use
16474         mono_global_codeman_reserve () instead of a dynamic code manager.
16475
16476 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16477
16478         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16479         ves_array_element_address() jit icall and use a generated
16480         managed method instead (which is about 4 times faster for a rank 3
16481         array access).
16482
16483 2006-11-29  Mark Mason  <mason@broadcom.com>
16484
16485         * basic-calls.cs: additional tests for passing
16486         structures as function arguments.
16487
16488 2006-11-29  Mark Mason  <mason@broadcom.com>
16489
16490         * mini-mips.h: disable custom exception handling
16491         * mini-mips.c: throw/rethrow should use jalr to call
16492         exception stubs.  Fixed bug with passing structures
16493         by value. More support for tracing floating point
16494         functions.
16495
16496 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16497
16498         * mini.c: fixed typo in the soft-float ldind.r4 handling
16499         (bug #80086).
16500
16501 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16502
16503         * mini.c, mini.h, driver.c: added --runtime command line
16504         option to select a different runtime than the autodetected one.
16505         * jit.h: added API for embedders to initialize with a specific
16506         runtime version.
16507
16508 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16509
16510         * mini.c: handle also boxing of r4 values (bug #80024).
16511
16512 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16513
16514         * mini-ppc.c: force indirect calls until we reserve
16515         enough address space for all the generated code.
16516
16517 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16518
16519         * exceptions-arm.c: workaround bugs in the libc definition
16520         of struct ucontext.
16521
16522 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16523
16524         * inssel.brg: fixes from me and Mark Mason.
16525
16526 2006-11-23  Dick Porter  <dick@ximian.com>
16527
16528         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16529         semaphore display now we've fixed the initial value
16530
16531 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16532
16533         * inssel.brg: partially revert the last change to fix the build.
16534
16535 2006-11-21  Mark Mason  <mason@broadcom.com>
16536
16537         * inssel.brg: Add and use compare-and-branch macros to support
16538         architectures that do not have condition code registers (ie. MIPS).
16539         * *-mips.{c,brg,md}: Fix copyright statements
16540
16541 2006-11-20  Mark Mason  <mason@broadcom.com>
16542
16543         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16544         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16545         * mini.h: Added declaration for mono_print_ins()
16546         * mini-codegen.c: added ins_spec initializer for MIPS
16547         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16548         vreg to be virtual and hreg to be non-virtual.
16549         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16550         is not yet working/implemented correctly.
16551         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16552         non-static, fixup calls to print_ins() from other parts in the file.
16553
16554 2006-11-20  Mark Mason  <mason@broadcom.com>
16555
16556         * basic-calls.cs: added tests for passing structures as arguments
16557         to calls.
16558
16559 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16560
16561         * inssel-long32.brg: optimize signed division by power of two.
16562
16563 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16564
16565         * mini-arm.c: added support for interworking with thumb code
16566         (mono must be still be built using the ARM instruction encoding).
16567
16568 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16569
16570         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16571         verifier has different rules for it.   Fixes a few verifier issues
16572         in the test suite.
16573
16574         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16575         at the end, so people know what happened.
16576
16577 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16578
16579         * brach-opts.c: in optimize_exception_target() make sure we
16580         are in a catch clause (fixes bug #79871).
16581
16582 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16583
16584         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16585         more soft-float support fixes.
16586
16587 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16588
16589         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16590         that are passed half on the stack and half in registers.
16591
16592 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16593
16594         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16595         more mips integration work from Mark E Mason 
16596         <mark.e.mason@broadcom.com>.
16597
16598 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16599
16600         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16601         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16602         tramp-mips.c: added sources for the mips port, not
16603         integrated in the build yet. Contributed by
16604         Mark E Mason <mark.e.mason@broadcom.com>.
16605
16606 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16607
16608         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16609
16610 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16611
16612         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16613         put the soft-float rules in its own file since it seems to
16614         break s390 compilation.
16615
16616 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16617
16618         * mini-arm.c: fixed wrnings.
16619
16620 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16621
16622         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16623         inssel-arm.brg: ARM support for soft-float.
16624
16625 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16626
16627         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16628         loads and stores of 32 bit fp values.
16629
16630 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16631
16632         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16633
16634         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16635         works. Fixes #79852 and #79463.
16636
16637 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16638
16639         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16640         more soft-float support WIP and fixes.
16641
16642 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16643
16644         * mini-arm.c: some VFP updates.
16645
16646 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16647
16648         * mini-exceptions.c: 0 is a valid local var offset in some
16649         architectures, don't assert (bug #78508).
16650
16651 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16652
16653         * exceptions-arm.c: fixed off by one error in stack walk code.
16654
16655 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16656
16657         * mini.h, mini.c: more precise tracking of type load exceptions.
16658
16659 2006-11-03  Robert Jordan  <robertj@gmx.net>
16660
16661         * Makefile.am: [WIN32] Add monow.exe target.
16662         * driver.c: [WIN32] Don't detach the console when debugging.
16663         Fixes bug #79797.
16664         
16665 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16666
16667         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16668
16669 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16670
16671         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16672
16673         * driver.c (mini_regression): Fix --regression with AOT.
16674
16675         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16676
16677 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16678
16679         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16680
16681         * mini-sparc.h: Don't use sigaction on sparc/linux.
16682
16683         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16684
16685         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16686
16687         * mini-exceptions.c: Add proper include files for getpid ().
16688
16689 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16690
16691         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16692         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16693         method.
16694
16695         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16696         name cache to reduce its size.
16697
16698         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16699
16700 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16701
16702         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16703         the mono_lmf TLS variable.
16704
16705         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16706         trampoline lmf frames.  
16707
16708         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16709
16710 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16711
16712         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16713         the mono_lmf TLS variable.
16714
16715         * mini-exceptions.c: Access the LMF structure through accessors.
16716
16717         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16718         variable instead of in jit_tls->lmf.
16719
16720         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16721         
16722         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16723         trampoline lmf frames.
16724
16725         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16726
16727 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16728
16729        * mini.c trace.c mini-x86.c: Revert these too.
16730         
16731        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16732        signature change.
16733
16734 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16735
16736         * genmdesc.c: removed now dead code.
16737
16738 2006-10-09  Robert Jordan <robertj@gmx.net>
16739
16740         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16741
16742 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16743
16744         * mini.h: do not leave gaps in the opcode values.
16745
16746 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16747
16748         * jit-icalls.h: flag functions as internal here, too.
16749
16750 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16751
16752         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16753         functions with the internal attribute.
16754
16755 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16756
16757         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16758
16759 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16760
16761         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16762         for soft-float.
16763
16764 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16765
16766         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16767         tail calls as on other platforms.
16768
16769         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16770
16771         * iltests.il: Add a few tailcall tests.
16772
16773 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16774
16775         * driver.c: fix loop for old compilers (bug #79521).
16776
16777 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16778
16779         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16780
16781         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16782
16783         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16784         metadata without any code.
16785
16786         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16787         more precise debugging information using gdb.
16788
16789 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16790
16791         * inssel-ia64.brg: Make the helper methods static.
16792
16793 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16794
16795         * inssel-x86.brg: make the helper methods static.
16796
16797 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16798
16799         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16800
16801 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16802
16803         * mini.c: updates for monoburg changes.
16804         * inssel.brg: make a few helper functions static as they should.
16805
16806 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16807
16808         * Makefile.am: Move mini-codegen.c to common_sources.
16809
16810 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16811
16812         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16813         instructions.
16814         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16815         mini-ppc.h: port to use the common local register allocator.
16816
16817 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16818
16819         * mini.h: Remove the comment too then.
16820
16821 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16822
16823         * mini.h: put back backend.data which is to be used shortly and
16824         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16825         pointers on 4 byte boundaries it'd have much bigger issues running
16826         and you can ifdef it out anyway.
16827
16828 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16829
16830         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16831         MonoInst size by 4 bytes on 64 bit machines.
16832
16833 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16834
16835         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16836         replacement with more meaningful field names. Arch maintainers, please
16837         check the assigned names are good enough for your arch.
16838
16839 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16840
16841         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16842         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16843
16844 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16845
16846         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16847         relocations and memory requirements, put the optimization flags
16848         definitions in their own file.
16849
16850 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16851
16852         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16853
16854         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16855
16856 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16857
16858         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16859
16860 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16861
16862         * inssel.brg: use the correct function to get the size of an item
16863         in an array, given an element class.
16864         * aot-compiler.c: do not access class->class_size directly.
16865
16866 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16867
16868         * mini.h, debug-mini.c: added a debugging function to print
16869         info about local variables and arguments in a jitted method.
16870
16871 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16872
16873         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16874
16875         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16876
16877 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16878
16879         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16880         inner and outer loops when passing vtypes.
16881
16882 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16883
16884         * mini-ppc.c: take into account the cpu errata for cache flushing
16885         which caused some random errors (bug #79381).
16886
16887 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16888
16889         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16890         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16891
16892 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16893
16894         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16895         loaded.
16896
16897         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16898         freebsd ports tree.
16899
16900         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16901         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16902
16903         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16904         displacement.
16905
16906 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16907
16908         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16909
16910 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16911
16912         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16913         macro does not have to be changed during debugging.
16914
16915         * 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>.
16916
16917         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16918
16919         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16920         
16921         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16922         MONO_ARCH_NO_EMULATE_MUL is defined.
16923
16924         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16925
16926         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16927
16928         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16929
16930         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16931         
16932 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16933
16934         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16935         stuff to mini-exceptions.c where it is used.
16936
16937         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16938         setup code, the real one is in mini-exceptions.c.
16939
16940         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16941         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16942         some changes from the freebsd ports tree.
16943
16944         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16945         constants.
16946         
16947         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16948
16949 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16950
16951         * mini.c: on Linux, check for /proc to be mounted
16952         (bug# 79351, novell bug#201204).
16953
16954 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16955
16956         * mini.c: handle cases where pthread_attr_getstack() behaves
16957         incorrectly (bug #78096).
16958
16959 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16960
16961         * mini-arm.c: support larger stack frames (bug #79272).
16962
16963 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16964
16965         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16966
16967         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16968         tokens.
16969
16970         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16971         mono_class_from_name () to find a class from its name.
16972
16973         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16974
16975 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16976
16977         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16978
16979 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16980
16981         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16982
16983 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16984
16985         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16986         callinfo->trampoline.
16987
16988         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16989         fixes #79271.
16990         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16991         future.
16992
16993 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16994
16995         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16996
16997 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16998
16999         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17000         stats.method_trampolines, it is already done by the generic trampoline code.
17001
17002         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17003         
17004 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17005
17006         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17007
17008         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17009
17010         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17011
17012         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17013         
17014         * mini.c (print_jit_stats): Print new stats.
17015
17016         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17017
17018 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17019
17020         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17021         Address on two dimensional arrays. Fixes #78729.
17022
17023         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17024
17025         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17026         a method.
17027
17028         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17029
17030         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17031         #79130.
17032         
17033         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17034         a race condition.
17035         (mini_get_ldelema_ins): Ditto.
17036
17037 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17038
17039         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17040         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17041         Fixes #79213.
17042
17043 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17044
17045         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17046         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17047
17048         * exceptions-s390x.c: Cosmetic change.
17049
17050         * tramp-s390.c: Fix warning.
17051
17052         * cpu-s390.md: Correct length of mul_imm.
17053
17054 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17055
17056         * aot-compiler.c: added binary writer with ELF backend
17057         implementation (only on Linux/x86 for now).
17058
17059 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17060
17061         * Makefile.am: Don't run net 2.0 AOT tests.
17062
17063         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17064         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17065
17066         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17067
17068 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17069
17070         * aot-compiler.c: simplified and refactored the asm-writing code
17071         to allow different backends.
17072
17073 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17074
17075         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17076
17077         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17078         little. Share patches of type TYPE_FROM_HANDLE as well.
17079
17080         * mini.c (mono_patch_info_equal): New helper function.
17081         (mono_patch_info_hash): Ditto.
17082
17083         * aot-compiler.c (emit_method_code): Fix s390 build.
17084
17085         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17086         is not handled because it is stored as a flag and not as a type ctor. Fixes
17087         #79016.
17088
17089 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17090
17091         * aot-compiler.c: Fix computation of GOT slot statistics.
17092         
17093         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17094         Also remove support for not PIC AOT.
17095
17096         * mini.h: Bump AOT file format version.
17097
17098         * objects.cs: Add a test for #78990.
17099
17100         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17101         (peter.dettman@iinet.net.au). Fixes #79087.
17102
17103         * basic-long.cs: Add a test for the above.
17104
17105 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17108         
17109         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17110         code somewhat.
17111
17112 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17113
17114         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17115         exceptions.
17116
17117 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17118
17119         * mini.c: Don't verify COM proxy invoke calls
17120         
17121
17122 2006-08-10  Dick Porter  <dick@ximian.com>
17123
17124         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17125         which process is holding semaphores locked.
17126
17127 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17128
17129         * mini-ia64.c mini-amd64.c: Fix #79027.
17130
17131         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17132
17133         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17134
17135         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17136         implicit arguments in a vararg call. Fixes #79027.
17137
17138 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17139
17140         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17141         (mono_get_array_new_va_signature): Ditto.
17142
17143 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17144
17145         * aot-runtime.c: Call init_plt lazily.
17146
17147         * inssel-long.brg: Fix unsigned long->int conversion.
17148
17149         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17150
17151         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17152         that most data is now in the .rss/.data section.
17153
17154 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17155
17156         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17157
17158         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17159
17160         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17161
17162         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17163
17164         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17165         virtual call. Fixes #79010.
17166
17167         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17168         and use the result as the this argument in the real call.
17169
17170         * generics.2.cs: Add a new test for #79010.
17171         
17172 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17173
17174         * mini-x86.c: Fix a warning.
17175
17176         * aot-compiler.c: Add a bunch of statistics.
17177
17178         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17179
17180 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17181
17182         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17183
17184 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17185
17186         * 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>.
17187
17188 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17189
17190         * mini.c (mono_method_to_ir): Obtain the original method in the
17191         CIL stream and use this to perform validation.
17192
17193         Fixed: #78816
17194
17195 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17196
17197         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17198         (mono_arch_call_opcode): Ditto.
17199
17200         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17201         #78826.
17202
17203         * mini.c (mono_patch_info_dup_mp): New helper function.
17204         
17205         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17206         compilation. Fixes #78827.
17207
17208 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17209
17210         * declsec.c: Use original security informations for
17211           MONO_WRAPPER_MANAGED_TO_MANAGED.
17212
17213 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17214
17215         * mini.c: Allow Com Interop methods/classes and
17216         don't verify COM wrapper calls
17217         
17218
17219 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17220
17221         * inssel-long32.brg: Fix long->i4 checked conversion.
17222
17223         * exceptions.cs: Add a test for the above.
17224
17225 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17226
17227         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17228
17229         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17230         leaks.
17231
17232         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17233         #78775.
17234
17235 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17236
17237         * mini.c: Fix solaris/x86 exception handling.
17238
17239         * Makefile.am: Get rid of $(ICU_LIBS).
17240
17241 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17242
17243         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17244         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17245         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17246
17247         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17248
17249         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17250         this function causes a SIGSEGV.
17251
17252 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17253
17254         * mini.c: Remove unused solaris/x86 includes.
17255
17256 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17257
17258         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17259
17260 2006-06-20  Jb Evain  <jbevain@gmail.com>
17261
17262         * cpu-g4.md: fix max length of start_handler instruction.
17263
17264 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17265         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17266
17267 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17268         * ssa.c: Fixed bug 78653 for SSA based deadce.
17269         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17270         MonoInst.flags, used in SSA based deadce.
17271         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17272         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17273
17274 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17275
17276         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17277         it can end up using non executable memory on ppc64 systems
17278         running ppc32 userspace (fix from Johannes Berg).
17279
17280 2006-06-14  Dick Porter  <dick@ximian.com>
17281
17282         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17283         4.1.1
17284
17285 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17286         * mini.c: Made so that inline is locally disabled if it would
17287         trigger a .cctor, because too many apps depend on this behavior
17288         (which seems to be also the one of the MS CLR).
17289
17290 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17291
17292         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17293         No idea why this worked before.
17294
17295         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17296         which branch to outer exception clauses since they could skip the
17297         inner finally clauses. Fixes #78633.
17298
17299         * exceptions.cs: Add a test for the above.
17300
17301         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17302         Fixes #78629.
17303
17304         * iltests.il: Add a test for the above.
17305
17306 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17307
17308         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17309         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17310
17311         * iltests.il: Add a test for the above.
17312
17313 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17314
17315         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17316         
17317         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17318         methods as instrinsics.
17319
17320 2006-06-09  Wade Berrier <wberrier@novell.com>
17321
17322         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17323         (simple-cee-ops.h ssapre-mini-ops.h)
17324
17325 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17326
17327         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17328         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17329         instruction).
17330         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17331         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17332
17333 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17334
17335         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17336
17337 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17338
17339         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17340         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17341         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17342         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17343         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17344         of opcodes, so that bug 78549 should not happen again.
17345         * ssapre.c: Updated to use the renamed files.
17346
17347 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17348
17349         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17350         in OP_ATOMIC_EXCHANGE_I4.
17351
17352 2006-06-07  Wade Berrier <wberrier@novell.com>
17353
17354         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17355         in mono_debugger_create_notification_function)
17356
17357 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17358
17359         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17360         
17361         * mini.c (type_from_stack_type): Disable some changes which do not
17362         seem to work.
17363
17364         * driver.c: Reenable opts.
17365
17366         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17367         of the evaluation stack.
17368         
17369         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17370         evaluation stack trace at entry to the bblock.
17371
17372         * mini.c (merge_stacks): New function to perform verification of stack merges.
17373         Turned off by default.
17374
17375         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17376         STACK_MP.
17377         
17378 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17379
17380         * local-propagation.c: Fixed bug 78549.
17381
17382 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17383
17384         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17385
17386 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17387
17388         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17389         tramp-arm.c, tramp-ia64.c
17390         (mono_debugger_create_notification_function): Update signature to
17391         new signature and use new protocol for creating the notification
17392         function.  
17393
17394         Should fix the build.
17395
17396 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17397
17398         * exceptions-ppc.c (mono_jit_walk_stack)
17399         (ves_icall_get_frame_info): Fix the build
17400
17401 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17402
17403         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17404
17405 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17406
17407         * il2tests.2.il: New file for generics CIL tests.  Add test for
17408         #78019.
17409         * Makefile.am: Update.
17410
17411         Fix #78019
17412         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17413         to nullable types.
17414
17415 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17416
17417         * aliasing.c: Fixed bug 78311.
17418
17419 2006-05-29  Martin Baulig  <martin@ximian.com>
17420
17421         * mini-exceptions.c (mono_find_jit_info): When computing the
17422         native offset, check whether we're actually inside the method's
17423         code; call mono_debug_print_stack_frame() to format the frame.
17424         (ves_icall_System_Exception_get_trace): Call
17425         mono_debug_print_stack_frame() to format the stack frame.
17426         (ves_icall_get_trace): Update to the new debugging API.
17427         (mono_jit_walk_stack_from_ctx): Likewise.
17428         (ves_icall_get_frame_info): Likewise.
17429
17430         * mini.c (get_method_from_ip): Use the new debugging API.
17431         (mono_print_method_from_ip): Likewise.
17432
17433         * exceptions-ppc.c
17434         (mono_jit_walk_stack): Use the new debugging API.
17435         (ves_icall_get_frame_info): Likewise.   
17436
17437 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17438
17439         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17440
17441 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17442
17443         * mini.c: Added "limitator" to inline for debugging.
17444
17445 2006-05-24  Martin Baulig  <martin@ximian.com>
17446
17447         * debug-debugger.c (mono_debugger_init): Create a private,
17448         malloc()-based code manager for the notification function and
17449         intentionally leak it on exit.  This fixes the crash-on-exit race
17450         condition.
17451
17452         * tramp-amd64.c
17453         (mono_debugger_create_notification_function): Added
17454         `MonoCodeManager *' argument.
17455
17456         * tramp-x86.c
17457         (mono_debugger_create_notification_function): Added
17458         `MonoCodeManager *' argument.
17459
17460 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17461
17462         * aliasing.c: Fixed 64 bit issue.
17463         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17464         default since all known bugs are fixed (one more time!).
17465
17466 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17467
17468         * mini.c: write barrier support.
17469
17470 2006-05-23  Martin Baulig  <martin@ximian.com>
17471
17472         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17473         check at the top of the file.
17474
17475 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17476
17477         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17478         reverting changes without reason and without changelog entries.
17479
17480 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17481
17482         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17483         to a few opcodes. Fixes #78439.
17484
17485         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17486         consistency with other archs.
17487
17488         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17489
17490 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17491
17492         * debug-debugger.c: fix the build.
17493
17494 2006-05-17  Martin Baulig  <martin@ximian.com>
17495
17496         * debug-debugger.c
17497         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17498         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17499         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17500         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17501
17502 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17503
17504         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17505
17506 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17507
17508         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17509         MONO_TYPE_GENERICINST.
17510         
17511         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17512         MONO_TYPE_GENERICINST.
17513
17514 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17515
17516         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17517         #78325.
17518
17519 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17520
17521         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17522         mempool.
17523         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17524
17525 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17526
17527         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17528         mono_trace_cleanup ().
17529
17530         * iltests.il: Fix problem with the newly added test.
17531
17532         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17533         due to register constraints, free up the previous hreg. Fixes #78314.
17534
17535         * iltests.il: Add new test for #78314.  
17536
17537         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17538         Interlocked.Add. Fixes #78312.
17539
17540         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17541         
17542 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17543
17544         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17545
17546 2006-05-05  Martin Baulig  <martin@ximian.com>
17547
17548         * debug-mini.c (mono_debug_open_block): New method.
17549
17550         * mini-amd64.c
17551         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17552         the beginning of each basic block.
17553
17554         * mini-x86.c
17555         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17556         the beginning of each basic block.
17557
17558 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17559
17560         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17561         default until I understand why they break the build on amd64.
17562
17563 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17564
17565         * mini.c (mini_cleanup): Call mono_cleanup ().
17566
17567         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17568         errors.
17569
17570 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17571
17572         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17573         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17574         default since all known bugs are fixed, and I cannot reproduce bug
17575         77944... I'm asking Matt Hargett to test again after this commit.
17576
17577 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17578
17579         * mini-codegen.c: Fixed typo that thrashed inline.
17580
17581 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17582
17583         * dominators.c (compute_dominators): Avoid using a worklist since
17584         it is not correct in some cases. Instead, iterate over all bblocks as
17585         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17586
17587 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17588
17589         * mini.c (mono_jit_compile_method_inner): Use
17590         mono_prepare_exception_from_error that resets the value
17591         internally.
17592
17593 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17594
17595         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17596         
17597 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17598
17599         * aliasing.c: Fixed bug 78210.
17600
17601 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17602
17603         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17604         default until all their problems (or the ones they trigger) are fixed.
17605
17606 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17607
17608         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17609         
17610         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17611         as loaded only after resolving patches since that could invoke the same method.
17612
17613         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17614
17615         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17616         functions.
17617
17618         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17619         AOT loader.
17620
17621         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17622         stack.
17623
17624         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17625         made from AOT code through the PLT table.
17626
17627         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17628         holding the plt offset when a call is made to the aot plt trampoline.
17629         
17630 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17631
17632         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17633         amd64 AOT support.
17634
17635         * Makefile.am (common_sources): Fix build breakage.
17636
17637         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17638         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17639         intra-assembly calls if possible.
17640         
17641         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17642
17643         * mini-trampolines.c: Handle PLT entries.
17644
17645         * mini.c: Avoid creating a GOT var for calls.
17646
17647         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17648         from mscorlib code.
17649
17650         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17651         from mscorlib code.
17652
17653         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17654         AOT code.       
17655
17656         * mini.h: Bump AOT file format version.
17657         
17658         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17659         covers more cases.
17660
17661 2006-04-25  Martin Baulig  <martin@ximian.com>
17662
17663         * driver.c: Disable copyprop, consprop and inline when running
17664         inside the debugger.
17665
17666 2006-04-25  Martin Baulig  <martin@ximian.com>
17667
17668         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17669         with `get_current_thread' and added `detach'.
17670         (MonoDebuggerMetadataInfo): Added `thread_size',
17671         `thread_tid_offset', `thread_stack_ptr_offset' and
17672         `thread_end_stack_offset'.
17673
17674 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17675
17676         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17677         aot-runtime.c.
17678
17679         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17680         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17681
17682         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17683
17684         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17685
17686         * aot.c: Add support for ADJUSTED_IID.  
17687
17688 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17689
17690         * aot.c (emit_method_order): Don't align method_order_end.
17691
17692         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17693         the interface ID changes.
17694
17695 2006-04-21  Dick Porter  <dick@ximian.com>
17696
17697         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17698         cleaning up a thread.  Fixes the new part of bug 77470.
17699
17700 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17701
17702         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17703         to managed wrapper.
17704                      
17705 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17706
17707         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17708         
17709         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17710         SIGSEGV. Fixes #78072.
17711
17712         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17713         unregister our SIGABRT handler.
17714
17715 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17716
17717         * mini.c: Disabled inline where it can alter the call stack in a
17718         way visible from managed code.
17719         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17720         default.
17721
17722 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17723
17724         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17725         on other platforms. Fixes #78089.
17726
17727 2006-04-13  Martin Baulig  <martin@ximian.com>
17728
17729         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17730         determine whether we're inside the debugger.
17731
17732         * debug-debugger.h
17733         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17734
17735 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17736
17737         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17738         handler clauses. Fixes #78024.
17739
17740         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17741         in the CALL_MEMBASE opcodes. Fixes #78088.
17742         (mono_arch_get_vcall_slot_addr): Ditto.
17743
17744 2006-04-10  Martin Baulig  <martin@ximian.com>
17745
17746         * debug-debugger.c: The thread handling code has now been moved
17747         into ../metadata/threads.c.
17748
17749 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17750
17751         * driver.c (mono_main): Fix --with-gc=none build.
17752
17753         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17754         (mono_spillvar_offset_float): Ditto.
17755         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17756         hreg, not when its !global, since on ia64, there is a third category: stacked
17757         registers.      
17758
17759 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17760
17761         * mini.c: set MonoInst->klass for load field address and a few other
17762         places.
17763
17764 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17765
17766         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17767
17768 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17769
17770         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17771         the branch opt changes.
17772
17773 2006-04-06  Dick Porter  <dick@ximian.com>
17774
17775         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17776         
17777         * wapihandles.c (mini_wapi_seminfo): 
17778         * driver.c (mono_main): Add semaphore info option
17779
17780 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17781
17782         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17783         branch optimization changes. Fixes #78009.
17784
17785 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17786
17787         * mini.c: ignore accessibility of methods in managed->native wrappers.
17788
17789 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17790
17791         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17792         
17793         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17794
17795 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17796
17797         * mini.c: Modify the branch optimizations to preserve the invariant that
17798         the entries inside the in_bb and out_bb arrays are unique.
17799         (mono_unlink_bblock): Avoid creation of new arrays.
17800
17801 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17802
17803         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17804         change (#77992).
17805
17806 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17807
17808         * mini.c (optimize_branches): Remove the "optimizations" in
17809         the cbranch1/cbranch2 -> branch cases which were causing several
17810         problems in the past. Fixes #77986.
17811
17812 2006-03-31  Chris Toshok  <toshok@ximian.com>
17813
17814         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17815         default optimizations :(
17816
17817 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17818
17819         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17820         branch.
17821
17822 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17823
17824         * local-propagation.c: Added comments to structs and removed
17825         "Mono" prefixes from local tree mover types.
17826
17827 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17828
17829         * Makefile.am (arch_sources): Define this for each architecture so 
17830         libmono_la_SOURCES is defined in one place.
17831
17832 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17833
17834         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17835         from handles/.
17836
17837 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17838
17839         * driver.c: print the GC name supplied by configure.
17840
17841 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17842
17843         * local-propagation.c: Added tree mover, and moved here all the
17844         local propagation code from mini.c
17845         * mini.c: Added support for treeprop, and moved all the local
17846         propagation code to local-propagation.c
17847         * mini.h: Added support for treeprop
17848         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17849         treeprop, inline and deadce by default
17850         * Makefile.am: Added local-propagation.c
17851
17852 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17853
17854         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17855
17856 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17857
17858         * debug-debugger.c: make it compile without the Boehm GC.
17859
17860 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17861
17862         * mini.c: fixed issue with mismatch when an icall is registered
17863         with multiple names but same address.
17864
17865 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17866
17867         * declsec.c, mini-exceptions.c: use write barrier to set reference
17868         fields of managed objects.
17869
17870 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17871
17872         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17873         (can_access_internals): Fix a warning.
17874
17875         * mini.c (print_method_from_ip): Rename this to 
17876         mono_print_method_from_ip so it gets exported.
17877
17878         * trace.c: Deal with strings inside StringBuilder's containing garbage
17879         and fix memory leaks. Fixes #77848.
17880
17881 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17882
17883         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17884         fixes #77787.
17885
17886 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17887         
17888         * mini-s390.c: Remove OP_X86_TEST_NULL.
17889
17890 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17891
17892         * mini.c: use the correct GetHashCode() for the moving collector.
17893
17894 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17895
17896         * liveness.c: Regalloc spill cost tuning.
17897
17898 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17899         
17900         * mini-s390x.h: Correct S390_LONG macro.
17901
17902         * mini-s390x.c: Cleanup unused code.
17903
17904 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17905
17906         * jit-icalls.h: New file.
17907
17908         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17909         icalls and include that instead of including jit-icalls.c.
17910
17911         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17912         OP_X86 opcodes.
17913
17914 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17915
17916         * mini.c: when checking for member accessibility, also check for
17917         friend assemblies and for explicit interface implementations.
17918
17919 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17920
17921         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17922
17923         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17924
17925         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17926         common cases are done first.    
17927
17928         * mini-ops.h: Only define platform specific opcodes on the given platform.
17929
17930         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17931         branch.
17932         
17933 2006-03-14  Martin Baulig  <martin@ximian.com>
17934
17935         Revert Paolo's change from r57348:
17936
17937         * mini.h: don't use gboolean for bitfields.
17938         * mini.c: verifier changes for fields and methods accessibility.
17939
17940 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17941
17942         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17943
17944         * mini-s390x.c: Fix conv_r_un.
17945
17946         * cpu-s390, cpu-s390x.md: Fix lengths.
17947
17948 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17949
17950         * mini.c: nested types have access to all the nesting
17951         levels, not just the enclosing types.
17952
17953 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17954
17955         * mini.c: added a few more verification checks.
17956
17957 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17958
17959         * liveness.c: Merge optimizations from the linear-il branch.
17960
17961 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17962
17963         * mini-ia64.c (emit_call): Add a comment.
17964
17965         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17966
17967         * tramp-ia64.c: Fix some warnings.
17968
17969 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17970
17971         * mini.h: don't use gboolean for bitfields.
17972         * mini.c: verifier changes for fields and methods accessibility.
17973
17974 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17975
17976         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17977         lazy icall wrapper changes.
17978
17979         * dominators.c: Replace all the dominator algorithms with faster
17980         ones from the linear-il branch.
17981
17982         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17983         the mempool.
17984
17985         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17986         common cases are done first.
17987
17988         * mini-amd64.c: Fix some warnings.
17989
17990         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17991         from the mempool.
17992
17993         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17994         added code.
17995
17996         * mini.h: Add a missing prototype.
17997
17998 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17999
18000         * mini.c: Compile icall wrappers lazily.
18001
18002         * mini-codegen.c: Use printf instead of g_print since its much faster.
18003
18004         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18005         function.
18006
18007         * mini.c (optimize_branches): Cache the negative result from 
18008         remove_block_if_useless ().
18009
18010         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18011         Also fix some bblock linking issues.
18012
18013         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18014         assembly files.
18015
18016         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18017
18018         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18019         accessed fields first, for better cache behavior.
18020         
18021 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18022
18023         * mini.c: speedup IList<T> array accesses.
18024
18025 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18026
18027         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18028         inline_costs counter. Fixes #77190.
18029
18030 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18031
18032         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18033         trace messages. Fixes #77706.
18034
18035 2006-03-04  Martin Baulig  <martin@ximian.com>
18036
18037         * tramp-amd64.c, tramp-x86.c
18038         (mono_debugger_create_notification_function): Use
18039         mono_global_codeman_reserve() to allocate a buffer at runtime and
18040         return it.
18041
18042         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18043
18044         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18045         notification function at runtime and then call `initialize' in the
18046         `MONO_DEBUGGER__debugger_info' vtable.
18047
18048 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18049
18050         * iltests.il: Fix a visibility problem.
18051
18052 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18053
18054         * driver.c, mini.c: add hooks for the counters API.
18055
18056 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18057
18058         * driver.c: show disabled options.
18059
18060 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18061
18062         * linear-scan.c: always use cost-driven selection.
18063
18064 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18065
18066         * jit-icalls.c (helper_compile_generic_method): Revert change from
18067         2006-02-24.
18068
18069 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18070
18071         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18072
18073 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18074
18075         * inssel.brg: style fixes, mostly to force the updated monoburg
18076         to run for people using svn.
18077
18078 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18079
18080         * mini.c: match monoburg changes.
18081
18082 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18083
18084         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18085         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18086         declaration in the header file.
18087
18088 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18089
18090         * helpers.c: reduce relocations and mem usage.
18091
18092 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18093
18094         * mini.h, mini-codegen.c: disable logging features if
18095         requested by configure.
18096
18097 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18098
18099         * mini.c: tiny verifier changes.
18100
18101 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18102
18103         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18104         cpu-pentium.md: stack alignment changes for osx/x86,
18105         partially from Geoff Norton <gnorton@customerdna.com>.
18106
18107 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18108
18109         * jit-icalls.c (helper_compile_generic_method): Update to changes
18110         in metadata/class.c.
18111
18112 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18113         
18114         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18115         
18116         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18117         interface calls with large offsets.
18118
18119 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18120
18121         * jit-icalls.c (helper_compile_generic_method): Document the
18122         special-case we depend on so that we can inflate the method twice
18123         with the same context with no bad side-effects.
18124
18125 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18126
18127         * mini-x86.c, mini-amd64.c: fix for case when xen support
18128         is disabled.
18129
18130 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18131
18132         * mini-x86.c, mini-amd64.c: generate code to access tls items
18133         in a faster way for Xen systems.
18134
18135 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18136
18137         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18138         updates and compilation fixes for the OSX/x86 port, mostly from
18139         Geoff Norton <gnorton@customerdna.com>.
18140
18141 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18142
18143         * inssel.brg: faster interface call implementation
18144         to sync with the interface_offsets MonoVTable changes.
18145
18146 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18147
18148         * mini.c: more verification checks.
18149
18150 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18151
18152         * mini.c: added a few more verification checks.
18153
18154 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18155
18156         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18157         facility on the processor and use it if available.
18158
18159 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18160
18161         * driver.c, aot.c, mini.c: throw exception if the IL code is
18162         invalid or unverifiable.
18163
18164 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18165
18166         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18167         m.StructField.
18168
18169 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18170
18171         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18172
18173 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18174
18175         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18176         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18177         handling of instantiated generic valuetypes.
18178
18179 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18180
18181         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18182         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18183         instead.
18184
18185         * generics.2.cs: Revert the nullable reftypes tests.
18186
18187 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18188
18189         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18190         using __builtin_frame_address (1) as it doesn't work in the presence
18191         of optimizations. Hopefully fixes #77273.
18192
18193         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18194         -> generics.cs change as it doesn't work with some automake versions.
18195
18196 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18197
18198         * mini.c: handle systems that sue a different way to
18199         retrieve the stack address of the current thread.
18200
18201 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18202
18203         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18204         it specially in the makefile.
18205
18206         * generics.2.cs: Add tests for nullable reference types.
18207
18208 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18209
18210         * mini.c: always handle the case when mono_jit_init()
18211         is called in a thread different from the main thread,
18212         confusing libgc (bug #77309).
18213
18214 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18215
18216         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18217
18218 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18219
18220         * mini.c: change optimize_branches () to use a single loop
18221         and introduce a new optimization to simplify some range checks.
18222
18223 2006-02-03  Martin Baulig  <martin@ximian.com>
18224
18225         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18226         and merged with debugger_thread_manager_add_thread().
18227         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18228         inform the debugger about the main thread.
18229
18230 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18231
18232         * basic.cs: Add test for div.un/rem.un constant folding.
18233
18234 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18235
18236         * cpu-s390x.md: correct int_xor_imm length
18237
18238 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18239
18240         * generics.2.cs: New test for #77442.
18241
18242         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18243         #77442.
18244
18245 2006-02-02  Martin Baulig  <martin@ximian.com>
18246
18247         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18248         <mono/metadata/mono-debug-debugger.h>   
18249
18250         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18251
18252 2006-02-02  Martin Baulig  <martin@ximian.com>
18253
18254         * debug-debugger.h: New header file for debug-debugger.c.
18255
18256         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18257         function is a separate thread anymore; add support for attaching.
18258
18259 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18260
18261         * tramp-x86.c: Fix a warning.
18262
18263 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18264
18265         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18266         on very large methods.
18267
18268         * aot.c (load_patch_info): Fix a warning.
18269
18270 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18271
18272         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18273         mini-ops.h: alu membase optimizations.
18274
18275 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18276
18277         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18278         to speedup StringBuilder.
18279
18280 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18281
18282         * dominators.c (mono_compute_natural_loops): Fix detection of
18283         loop body start blocks.
18284
18285         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18286
18287 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18288
18289         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18290         #75145.
18291
18292 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18293
18294         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18295
18296 2006-01-25  Martin Baulig  <martin@ximian.com>
18297
18298         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18299         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18300         started to cleanup this file a little bit.
18301
18302 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18303
18304         * mini.c: optimize a codepath frequently happening in generics code.
18305
18306 2006-01-23  Martin Baulig  <martin@ximian.com>
18307
18308         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18309
18310         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18311         functions directly.
18312
18313         * driver.c: debug-debugger.c is only available if
18314         `MONO_DEBUGGER_SUPPORTED' is defined.   
18315
18316 2006-01-23  Martin Baulig  <martin@ximian.com>
18317
18318         * debug-debugger.c: Only enable this on platforms where the Mono
18319         Debugger is working (x86 and x86_64).
18320
18321 2006-01-21  Martin Baulig  <martin@ximian.com>
18322
18323         The Mono Debugger is now using the normal `mono' instead of the
18324         `mono-debugger-mini-wrapper' when executing managed code.
18325
18326         * debug-debugger.c: New file; previously known as
18327         debugger/wrapper/wrapper.c.
18328
18329         * debug-mini.c (mono_init_debugger): Removed.
18330
18331         * driver.c (mono_main): Added new `--inside-mdb' command line
18332         argument which is used when running inside the debugger.
18333
18334 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18335
18336         * liveness.c (mono_analyze_liveness): Remove some unused data
18337         structures.
18338
18339 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18340
18341         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18342
18343 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18344
18345         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18346         depends on implementation details of monobitset.
18347
18348         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18349         Fixes #77271.
18350
18351 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18352
18353         * liveness.c: Update after monobitset changes.
18354
18355 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18356
18357         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18358
18359 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18360
18361         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18362
18363         * mini-s390x.c: Remove warning messages.
18364
18365 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18366
18367         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18368
18369 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18370
18371         * generics.2.cs: Add ldelem/stelem_any test.
18372
18373 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18374
18375         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18376
18377 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18378
18379         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18380         
18381 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18382
18383         * generics.2.cs: Reenable vtype tests.
18384
18385         * inssel-x86.brg: Remove an icorrect valuetype rule.
18386
18387 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18388
18389         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18390         initial support for OP_ABS.
18391
18392 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18393
18394         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18395
18396 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18397
18398         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18399         conversion and implement LADD/LSUB.
18400
18401         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18402         architectures.
18403
18404 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18405
18406         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18407
18408         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18409         architectures.
18410
18411 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18412
18413         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18414         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18415         (stack walk problem).
18416
18417 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18418
18419         * aot.c (mono_aot_load_method): Fix a warning.
18420
18421 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18422
18423         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18424
18425 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18426
18427         * iltests.il: Add test for #77148.
18428
18429         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18430         #77148.
18431
18432 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18433
18434         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18435
18436 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18437
18438         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18439         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18440
18441         * basic-long.cs: Add lconv-to-r4/r8 tests.
18442
18443 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18444
18445         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18446
18447         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18448         here as on other archs.
18449
18450 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18451
18452         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18453
18454 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18455
18456         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18457         
18458         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18459
18460         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18461         instrument_prolog; Add memory_barrier instruction.
18462
18463 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18464
18465         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18466
18467 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18468
18469         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18470
18471         * aliasing.c inssel.brg: Fix warnings.
18472
18473         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18474         could skip initialization of some parts of memory.
18475
18476         * mini.c mini-ia64.c: Fix warnings.
18477
18478         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18479
18480 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18481
18482         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18483         a crash seen on sparc.
18484
18485         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18486         
18487         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18488
18489 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18490
18491         * mini-ops.h: Add s390_backchain instruction
18492
18493         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18494
18495         * cpu-s390.md: Add s390_backchain instruction
18496
18497         * mini-s390.c: Significant ABI changes
18498
18499         * mini-s390.h: Cater for zero length structures
18500
18501 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18502
18503         * mini-s390.c: ABI fixes
18504
18505         * inssel-s390.brg: Remove debug statements
18506
18507         * cpu-s390.md: Fix length of ATOMIC_xx operations
18508
18509 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18510
18511         * basic-float.cs: Add float<->long conversion tests.
18512
18513 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18514
18515         * mini-s390.c: Fix LOCALLOC processing.
18516
18517         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18518
18519 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18520
18521         * iltests.il: Add tests for some opcodes not covered by the other
18522         tests.
18523
18524 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18525
18526         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18527         register loading for Tail processing; Correct trace output.
18528
18529         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18530
18531         * cpu-s390.md: Correct size of jmp instruction. 
18532
18533 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18534
18535         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18536
18537 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18538
18539         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18540           Bring s390 up to current level.
18541
18542 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18543
18544         * generics.2.cs: Disable the newly added tests as they do not work yet.
18545         
18546         * generics.2.cs: Add valuetype tests.
18547
18548 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18549
18550         * basic-long.cs: Add i4->u8 test.
18551
18552         * objects.cs: Add tests for JIT intrinsic.
18553
18554         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18555         optimizations lost by a mistake.
18556
18557 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18558
18559         * basic-long.cs: Remove a test moved to objects.cs.
18560
18561         * arrays.cs: Add more array tests.
18562
18563 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18564
18565         * arrays.cs: Add new tests for multi-dimensional arrays.
18566
18567 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18568
18569         * Makefile.am (test_sources2): Add generics.2.cs.
18570         (EXTRA_DIST): Add test_sources2.
18571
18572 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18573
18574         Support for boxing and unboxing nullable types as well as the
18575         isinst operation on nullables, per the CLI ammendment.
18576
18577         * inssel.brg (CEE_ISINST): Special case for nullable
18578
18579         * mini.c (handle_unbox_nullable): new method
18580         (handle_box): Special case for nullable types
18581         (mono_method_to_ir): Call handle_unbox_nullable in correct
18582         places.
18583
18584         * generics.2.cs: New test suite
18585
18586         * Makefile.am: Support for regression tests with generics.
18587
18588 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18589
18590         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18591         allocated to registers. Fixes #76800.
18592
18593 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18594
18595         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18596
18597 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18598
18599         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18600         of platforms.
18601
18602 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18603
18604         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18605         objects.cs.
18606
18607         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18608         
18609         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18610 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18611
18612         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18613         single precision before storing to a single precision location.
18614
18615 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18616
18617         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18618
18619 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18620
18621         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18622         correct files.
18623
18624         * basic.cs: Remove test_0_byte_compares test which was moved to
18625         objects.cs a long time ago.
18626
18627 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18628
18629         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18630
18631 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18632
18633         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18634         handlers are called.
18635
18636         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18637         throwing code.
18638
18639          * mini-ia64.c: Add support for the throw->branch exception 
18640         optimization.   
18641
18642         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18643
18644 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18645
18646         * mini.c: Enabled "fastpath" deadce :-)
18647         
18648 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18649
18650         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18651         alias analysis pass to support it.
18652         * mini.h: Likewise.
18653         * ssa.c: Likewise.
18654         * liveness.c: Likewise (liveness computation can use aliasing
18655         information to be more accurate).
18656         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18657         moreover made so that "--compile-all" uses the given optimization
18658         flags and not the default ones.
18659         * aliasing.c: Alias analysis (new file).
18660         * aliasing.h: Likewise.
18661         * Makefile.am: added "aliasing.c" and "aliasing.h".
18662         
18663 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18664
18665         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18666         OP_L opcodes.
18667
18668 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18669
18670         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18671         fp >= end_of_stack exit condition, as it is not needed, and it might
18672         become true for fp eliminated frames.
18673
18674 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18675
18676         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18677         coded offsets.
18678
18679 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18680
18681         * mini-arm.c: fixed alignment of doubles/longs to match
18682         the C ABI (bug #76635).
18683
18684 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18685
18686         * aot.c: fix compilation with --enable-minimal=aot.
18687
18688 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18689
18690         * mini-arm.c: fixed compatibility with the new
18691         floating point emulator package for compares.
18692
18693 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18694
18695         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18696
18697 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18698
18699         * mini-exceptions.c (print_stack_frame): Output to stderr.
18700         (mono_handle_native_sigsegv): Ditto.
18701
18702 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18703
18704         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18705         OP_LCONV_TO_OVF_I implementation.
18706
18707         * mini-amd64.c: Add support for the throw->branch exception 
18708         optimization.
18709
18710         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18711         when the catch clause catches a more general exception, i.e. Object.
18712
18713 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18714
18715         * cpu-ia64.md: Remove unused opcodes.
18716
18717         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18718         specific defines for architectures defining USE_SIGACTION.
18719
18720         * mini-ia64.c: Fix some warnings.
18721
18722         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18723         version seemed to skip a frame.
18724
18725 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18726
18727         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18728         only calls which are made to native code use this flag.
18729
18730 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18731
18732         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18733         varargs methods as well.
18734         
18735         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18736         which have save_lmf set. Reorganize methods prologs a bit.
18737
18738         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18739         debugger to the proper place.
18740
18741 2005-10-29  Martin Baulig  <martin@ximian.com>
18742
18743         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18744         when running inside the debugger until the debugger has support
18745         for it.
18746
18747 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18748
18749         * mini.h: Fix a warning.
18750
18751 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18752
18753         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18754         we expose publicly, this returns the string.
18755
18756 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18757
18758         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18759         with fp elimination.
18760
18761 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18762
18763         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18764         native stacktrace using the glibc 'backtrace' function if available.
18765
18766 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18767
18768         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18769
18770         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18771         handle SIGSEGVs received while in native code.
18772
18773         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18774         code, call mono_handle_native_sigsegv which will abort the runtime
18775         after printing some diagnostics, instead of converting it into a
18776         confusing NullReferenceException.
18777
18778 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18779
18780         * cpu-pentium.md: Remove unused opcodes.
18781
18782 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18783
18784         * mini-amd64.h (MonoLMF): Add rsp field.
18785
18786         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18787         the lmf too.
18788
18789 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18790
18791         * mini-codegen.c (get_register_spilling): Fix some warnings.
18792
18793 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18794
18795         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18796         elimination during exception handling. Enable fp elimination by
18797         default.
18798
18799         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18800         elimination.
18801
18802 2005-10-16  Martin Baulig  <martin@ximian.com>
18803
18804         * mini-exceptions.c
18805         (mono_debugger_run_finally): New public method for the debugger.
18806
18807 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18808
18809         * debug-mini.c (mono_debug_init_method): Fix warning.
18810
18811         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18812         the 'exname' parameter const to fix some warnings.
18813
18814 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18815
18816         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18817         introduced by the previous patch.
18818
18819 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18820
18821         * basic-float.cs: Add test for precision of float arithmetic.
18822
18823         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18824         when loading/storing single values from/to memory.
18825
18826         * mini.c (mono_jit_compile_method_with_opt): Create the function
18827         pointers in the correct domain.
18828
18829 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18830
18831         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18832         introduced by previous patch.
18833         
18834         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18835         when out_filter_idx is NULL.
18836
18837         * mini-exceptions.c: Don't run filter clauses twice during exception
18838         handling. Fixes #75755.
18839
18840 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18841
18842         * aot.c: Add support for ldflda wrappers.
18843
18844         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18845         #75902.
18846
18847 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18848
18849         * mini.c, mini.h: do not consider exception handlers blocks when
18850         setting up interface variables.
18851
18852 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18853
18854         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18855
18856 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18857
18858         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18859         causes a regression.
18860
18861         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18862
18863 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18866         of the OP_P definitions.
18867
18868         * TODO: Add a proposal for dealing with the CEE/OP mess.
18869
18870         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18871         optimizations from the x86 port.
18872
18873         * cpu-amd64.md: Ditto.
18874
18875         * basic.cs basic-long.cs: Add tests.
18876
18877 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18878
18879         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18880         Patrik Torstensson's implementation of my exception-handling
18881         optimization idea, when the exception object is not used
18882         (bug #62150).
18883
18884 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18885
18886         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18887         of the mul_imm optimizations from the old jit.
18888
18889 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18890
18891         * mini.c, liveness.c: patch by Patrik Torstensson and
18892         Zoltan Varga to improve performance in methods with
18893         exception clauses.
18894
18895 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18896
18897         * driver.c: Remove 'Globalization' entry from --version.
18898
18899 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18900
18901         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18902         there is a profiler interested in JIT events.
18903
18904         * aot.c: Load profile files produced by the AOT profiling module, and
18905         reorder methods based on the profiling info. Add a 'method_order' table
18906         to the AOT file to make mono_aot_find_jit_info work with the reordered
18907         methods.
18908
18909         * mini.h: Bump AOT file version info.
18910
18911 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18912
18913         * mini-arm.h: work around what looks like a gcc bug when optimizations
18914         are enabled.
18915
18916 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18917
18918         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18919         conditionals.  Use ...
18920         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18921
18922 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18923
18924         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18925         to determine the amount of memory to copy when passing valuetypes.
18926
18927         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18928         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18929
18930 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18931
18932         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18933         information about aot.
18934
18935 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18936
18937         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18938         macros. This will allow a deadlock debugger to easily be plugged
18939         in.
18940
18941 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18942
18943         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18944
18945 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18946
18947         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18948         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18949         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18950         ($(arch_built)) [CROSS_COMPILING]: Error out.
18951
18952 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18953
18954         * aot.c: Add support for the no_special_static flag for classes.
18955
18956 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18957
18958         * Reapply reverted patches.
18959
18960         * *: Revert r50174 as well.
18961
18962         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18963
18964 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18965
18966         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18967
18968 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18969
18970         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18971         part of the SIG_HANDLER_SIGNATURE.  
18972
18973 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18974
18975         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18976         statistics.
18977
18978         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18979         introduced by previous patch.
18980
18981 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18982
18983         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18984         saved registers too.
18985
18986         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18987         upon the information returned by get_call_info ().
18988         
18989         * mini-x86.c (add_float): Fix stack size calculation.
18990         (mono_arch_call_opcode): Rewrite this so it works based up the
18991         information returned by get_call_info ().
18992         (mono_arch_get_this_vret_args): Ditto.
18993
18994 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18995
18996         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18997         in cinfo to determine the registers which need to be used.
18998
18999 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19000
19001         * driver.c (mono_main): Add --server and --desktop flags. 
19002
19003 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19004
19005         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19006         registers as global registers.
19007
19008         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19009         longer needed with the new register allocator.
19010
19011         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19012
19013         * cpu-ia64.md: Remove unused opcodes.
19014         
19015         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19016         
19017 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19018
19019         * cpu-amd64.md: Remove unused opcodes.
19020
19021         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19022         needed with the new register allocator.
19023
19024         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19025         reg-reg moves.
19026
19027 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19028
19029         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19030
19031 2005-09-16  Martin Baulig  <martin@ximian.com>
19032
19033         * exceptions-amd64.c
19034         (throw_exception): Don't call mono_debugger_throw_exception() if
19035         we're a rethrow - see the FIXME in the code.
19036
19037 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19038
19039         * mini.c (mono_init_exceptions): This only works on some architectures.
19040         
19041 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19042
19043         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19044         on ia64.
19045
19046         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19047
19048         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19049         now in mini-exceptions.c.
19050
19051 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19052
19053         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19054         now in mini-exceptions.c.
19055
19056 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19057
19058         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19059         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19060
19061         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19062         code into mini-exceptions.c. Add some assertions to it.
19063
19064 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19065
19066         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19067         (<software@solmersa.com>). Fix as errors on windows.
19068
19069 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19070
19071         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19072         method info into the LMF.
19073
19074 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19075         
19076         * mini-ia64.c: Add proper unwind info for method epilogs.
19077
19078         * exceptions-ia64.c: Add some code to help debugging.
19079         
19080         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19081
19082         * mini-exceptions.c: Fix warning.
19083
19084 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19085
19086         * mini.c: Really fix build.
19087
19088         * mini-x86.c mini-amd64.c: Fix build.
19089
19090 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19091
19092         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19093
19094         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19095         some Interlocked methods as intrinsics.
19096
19097         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19098         for Thread methods as well.
19099
19100         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19101
19102         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19103
19104         * mini-ia64.c mini-x86.c mini-amd64.c 
19105         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19106         OP_MEMORY_BARRIER.
19107         
19108         * mini.c (mono_init_exceptions): Fix build breakage.
19109
19110 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19111
19112         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19113         of instructions. Use the new ia64_unw_op macros for emitting unwind
19114         info.
19115
19116         * mini.c (mono_init_exceptions): Initialize exception handling
19117         related trampolines at startup.
19118
19119 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19120
19121         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19122
19123 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19124
19125         * mini.c: Handle type loading errors gracefully during compilation and
19126         throw the appropriate exception.
19127
19128 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19129
19130         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19131         for the mono binary.
19132
19133 2005-09-09  Martin Baulig  <martin@ximian.com>
19134
19135         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19136         the release.
19137
19138 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19139
19140         * mini-arm.h: use emulation for conv.r.un for the release.
19141
19142 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19143
19144         * mini-arm.c, objects.cs: more fixes and tests for them.
19145
19146 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19147
19148         * mini-arm.c: align structures to at least 4 bytes to be able
19149         to keep our current optimized memcpy.
19150
19151 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19152
19153         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19154
19155 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19156
19157         * mini.c: ignore SIGPIPE.
19158
19159 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19160
19161         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19162
19163         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19164
19165 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19166
19167         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19168
19169 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19170
19171         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19172         exception handling support.
19173         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19174         patch by Brian Koropoff <briank@marakicorp.com>).
19175
19176 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19177
19178         * mini.c: revert another 'optimization' which breaks when
19179         items on the eval stack need to be saved at a basic block end
19180         (bug #75940).
19181
19182 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19183
19184         * jit-icalls.c: for arrays, ensure we always provide
19185         lower bounds.
19186
19187 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19188
19189         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19190         
19191         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19192
19193 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19194
19195         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19196         arguments in their original register.
19197
19198 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19199
19200         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19201         memset/memcpy.
19202
19203         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19204         when ssapre is enabled.
19205
19206         * inssel-long.brg: Fix bug in previous patch.
19207
19208         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19209         multiplication by a constant.
19210
19211 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19212
19213         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19214         icc.
19215
19216         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19217         saving registers.
19218
19219 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19220
19221         * inssel-arm.brg: apply changes tested by Brian Koropoff
19222         <briank@marakicorp.com>.
19223
19224 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19225
19226         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19227         
19228 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19229
19230         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19231         to the same register if dreg is just a base register.
19232         (print_ins): Improve printing of membase opcodes.
19233
19234         * inssel-x86.brg: Add optimized ldind(reg) rules.
19235
19236         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19237
19238 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19239
19240         * mini.c: when running under valgrind, set the stack bottom for
19241         the GC at the actual approximate stack for the app (fixes running
19242         mono with valgrind).
19243
19244 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19245
19246         * mini.c: do no break at the first valuetype to init found
19247         (fixes bug #75791).
19248
19249 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19250
19251         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19252
19253 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19254
19255         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19256
19257 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19258
19259         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19260
19261 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19262
19263         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19264
19265         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19266         code.
19267
19268         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19269         code.
19270
19271         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19272         methods.
19273
19274 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19275
19276         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19277
19278 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19279
19280         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19281         in the tail recursion optimization.
19282
19283         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19284         debug info into the assembly file.
19285
19286         * iltests.il: Add test for filter regions.
19287
19288         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19289         initial stack of filter regions. Fixes #75755.
19290
19291 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19292
19293         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19294         stack requirements.
19295
19296 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19297
19298         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19299         the check for an already compiled method on non-ia64 platforms.
19300         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19301         proper domain.
19302
19303         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19304
19305         * inssel-x86.brg: Add some optimized call rules.
19306
19307 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19308
19309         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19310         method here.
19311
19312         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19313         mono_arch_patch_delegate_trampoline.
19314
19315         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19316
19317         * mini-trampolines.c: Fix build.
19318
19319         * mini-amd64.h: Add delegate trampolines.
19320
19321         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19322
19323         * inssel-amd64.brg: Add optimized call rules.
19324         
19325         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19326
19327         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19328
19329 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19330
19331         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19332         change.
19333
19334         * mini-ia64.c: Remove LMF fixmes.
19335
19336         * mini-ia64.h: Remove most fields from LMF.
19337
19338         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19339
19340         * mini-trampolines.c: Add support for IA64 function descriptors.
19341
19342         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19343         for IA64 function descriptors.
19344
19345 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19346
19347         * tramp-arm.c: patch the vtable for virtual calls. Added
19348         support code to register/unregister the LMF.
19349         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19350         more LMF work.
19351
19352 2005-08-19  Dick Porter  <dick@ximian.com>
19353
19354         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19355         bit value if needed.
19356
19357 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19358
19359         * mini.c (mini_get_method): Move handling of wrapper data here.
19360
19361         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19362
19363         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19364         virtual.
19365
19366         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19367         bblock->code does not remain empty.
19368
19369 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * arrays.cs: Add regression test for #75832.
19372
19373         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19374         rules. Fixes #75832.
19375
19376         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19377         instruction scheduling.
19378
19379 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19382
19383 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19386
19387         * mini-codegen.c: Fix VC build.
19388
19389         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19390
19391 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19392
19393         * mini.h: fix signature for mono_register_opcode_emulation.
19394
19395 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19396
19397         * mini.c: Get rid of most of the helper_sig_... constants using
19398         mono_create_icall_signature ().
19399
19400 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19401
19402         * jit-icalls.c (helper_ldstr): New helper function.
19403
19404         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19405
19406         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19407         throw, load the string using a helper call instead of creating a string object.
19408
19409         * aot.c: Update after LDSTR changes.
19410
19411         * mini.h: Bump AOT file version.
19412         
19413         * aot.c: Save class size info into the AOT file. Print more statistics during
19414         compilation.
19415
19416         * mini.h: Bump AOT file version.
19417
19418         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19419         ordering of disasm cases. Fixes #74957.
19420
19421 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19422
19423         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19424         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19425         the generic code needed for the ARM port.
19426
19427 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19428
19429         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19430         inssel-arm.brg: more ARM features and fixes.
19431
19432 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19433
19434         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19435         ARM port work in progress.
19436
19437 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19440
19441         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19442
19443         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19444
19445         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19446
19447         * *-ia64.*: Ongoing IA64 work.
19448         
19449         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19450
19451 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * TODO: Remove out-of-data todo stuff.
19454
19455         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19456         dead code.
19457
19458         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19459
19460         * mini.h: Bump corlib version.
19461
19462 2005-07-27  Martin Baulig  <martin@ximian.com>
19463
19464         * mini-codegen.c
19465         (create_copy_ins): Added `const unsigned char *ip' argument; set
19466         `copy->cil_code' from it.
19467
19468 2005-07-27  Martin Baulig  <martin@ximian.com>
19469
19470         * mini-exceptions.c (mono_handle_exception): Don't call
19471         mono_debugger_handle_exception() for filters.
19472
19473 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19474
19475         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19476         as well.
19477
19478 2005-07-26  Martin Baulig  <martin@ximian.com>
19479
19480         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19481
19482         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19483         helper_compile_generic_method() if the method is actually virtual
19484         and non-final.
19485
19486 2005-07-26  Martin Baulig  <martin@ximian.com>
19487
19488         * mini.c
19489         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19490         public; this is now accessed directly by the debugger.
19491         (mono_generic_trampoline_code): Removed.
19492
19493         * debug-mini.c
19494         (mono_debug_init_method): Also add interncalls and wrappers.
19495
19496 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19499
19500 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19501
19502         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19503
19504 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19505
19506         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19507
19508 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19511         getting TLS offsets on AMD64 too.
19512
19513 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19514
19515         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19516
19517 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19518
19519         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19520         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19521
19522 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19525
19526         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19527         to mini.c.
19528
19529         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19530         mono_sparc_is_virtual_call ().
19531         
19532         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19533
19534         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19535         trampoline parameters.
19536
19537         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19538         
19539         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19540         to mono_arch_get_vcall_slot_addr.
19541
19542         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19543         trampoline code.
19544
19545         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19546
19547 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19548
19549         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19550
19551 2005-07-19  Martin Baulig  <martin@ximian.com>
19552
19553         * exceptions-amd64.c (throw_exception): Call
19554         mono_debugger_throw_exception() here like we're doing it on i386.
19555
19556 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19557
19558         * mini-ia64.c: Add optimized TLS access support.
19559
19560 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19561
19562         * mini-exceptions.c: Ongoing IA64 work.
19563
19564         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19565
19566         * mini.c: Use the default optimization set when embedding. Fixes
19567         #75194.
19568
19569 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19570
19571         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19572         of trampolines to a separate file.
19573
19574         * mini-trampolines.c: New file.
19575
19576         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19577         separate file.
19578         
19579         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19580         amd64/ia64 code.
19581
19582         * mini-codegen.c: Fix cygwin build.
19583
19584 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19585
19586         * mini.c: Add some minor changes needed by the IA64 port.
19587
19588         * *-ia64.*: Ongoing IA64 work.
19589
19590 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19591
19592         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19593         trampolines into arch-independent and arch-dependent parts.
19594
19595         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19596
19597 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19598
19599         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19600
19601         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19602         the xp-regalloc-branch for amd64.
19603
19604         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19605         xp-regalloc-branch for x86.
19606
19607 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19608
19609         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19610
19611 2005-07-06  Martin Baulig  <martin@ximian.com>
19612
19613         * mini.c
19614         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19615         (mono_jit_runtime_invoke): Likewise.
19616
19617 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19618
19619         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19620         on x86 too.
19621         
19622         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19623         without loading their metadata. Reorganize the file format so exception handling+
19624         debug info is kept separate from normal method info. Create MonoJitInfo 
19625         structures for methods lazily.
19626
19627         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19628         loading metadata.
19629         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19630
19631         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19632
19633         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19634         in AOT code.
19635
19636         * mini.h: Bump AOT file version.
19637
19638 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19639
19640         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19641
19642 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19643
19644         * Makefile.am (check-local): Call semdel-wrapper.
19645
19646 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19647
19648         * mini-x86.c: Revert the last change as it seems to break the build..
19649
19650 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19651
19652         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19653         
19654         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19655
19656 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19657
19658         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19659         outside of the macro, so strange stuff doesn't happen with gcc4
19660         (NEW_AOTCONST_TOKEN): Likewise.
19661
19662 2005-06-28  Martin Baulig  <martin@ximian.com>
19663
19664         * mini.c (mini_class_is_system_array): New static method; use this
19665         instead of `klass->parent == mono_defaults.array_class' everywhere
19666         since this also works for the new generic array class.
19667
19668 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19669
19670         * inssel.brg: Remove warnings.
19671
19672 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * mini-ia64.c: Ongoing IA64 work.
19675
19676         * basic-float.cs: Add float->i1 conversion test.
19677
19678         * iltests.il: Add conv.u4 test.
19679
19680 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19681
19682         * inssel-long.brg: Fix bug caused by last change.
19683
19684 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19685
19686         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19687         BSDs.  Allows the x86 JIT to work on OSX86
19688
19689 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19690
19691         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19692         u4->i8 conversion.
19693
19694         * mini-ia64.c: Ongoing IA64 work.
19695
19696 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19697
19698         * mini-ia64.c: Ongoing IA64 work.
19699
19700         * driver.c: Clean up jit_code_hash as well when using --regression.
19701
19702         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19703
19704         * basic-long.cs: Add tests for long->u4 conversion.
19705
19706 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19707
19708         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19709         that we do not depend on undefined C behavior: the order stuff
19710         gets evaluated within an expression. Fixes mono when compiled on
19711         GCC 4.
19712
19713 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19714
19715         * *-ia64.*: Ongoing IA64 work.
19716
19717         * aot.c: Lower memory usage while loading AOT methods.
19718
19719         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19720
19721         * mini.h: Bump AOT file format version.
19722
19723 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19724
19725         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19726
19727 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19728
19729         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19730         not on callee assembly). Fixed some comments.
19731
19732 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19733
19734         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19735         it gets proper disassembly.
19736         (emit_method_info): Remove some dead code.
19737
19738         * mini.c (mini_method_compile): Allways allocate the GOT var in
19739         mono_method_to_ir for emulating opcodes.
19740
19741 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19742
19743         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19744         before freeing the code memory. Fixes #74990.
19745
19746         * objects.cs: Add regression test for #74992.
19747
19748         * liveness.c: Extend live ranges of arguments to the beginning of the
19749         method. Fixes #74992.
19750
19751         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19752         so it points into the faulting instruction.
19753
19754 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19755
19756         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19757
19758         * *-ia64.*: Ongoing IA64 work.
19759
19760         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19761
19762 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19763
19764         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19765
19766         * *-ia64.*: Ongoing IA64 work.
19767
19768 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19769
19770         * basic-long.cs: Add tests for add/sub.ovf.
19771
19772         * basic.cs: Add tests for sub.ovf.
19773
19774         * *-ia64.*: Ongoing IA64 work.
19775
19776 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19777
19778         * *-ia64.*: Ongoing IA64 work.
19779
19780         * basic.cs: Add conv.ovf.i4.un test.
19781
19782 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19783
19784         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19785         
19786 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19787
19788         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19789
19790 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19791
19792         * *-ia64.*: Ongoing IA64 work.
19793
19794 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19795
19796         * trace.[ch]:
19797         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19798
19799 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19802
19803 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19804
19805         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19806
19807         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19808         of a call is callable by a near call.
19809
19810 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19811
19812         * mini-ia64.c: Ongoing IA64 work.
19813
19814 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19815
19816         * genmdesc.c: Make the generated array non-static.
19817
19818         * inssel-long.brg: Fix LSHR_IMM rule.
19819
19820         * *-ia64.*: Ongoing IA64 work.
19821
19822         * *-ia64.*: Ongoing IA64 work.
19823
19824 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19825
19826         * *-ia64.*: Ongoing IA64 work.
19827
19828         * *-ia64.*: Ongoing IA64 work.
19829         
19830         * mini-ia64.c: Ongoing IA64 work.
19831
19832         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19833
19834 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19835
19836         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19837         
19838         * objects.cs basic-long.cs: Move some tests to objects.cs.
19839
19840 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * *-ia64.*: Ongoing IA64 work.
19843
19844         * iltests.il: Add a new test.
19845
19846         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19847         newobj. Fixes #75042.
19848
19849 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19850
19851         * *-ia64.*: Ongoing IA64 work.
19852         
19853         * *-ia64.*: Ongoing IA64 work.
19854         
19855         * *-ia64.*: Ongoing IA64 work.
19856
19857         * basic.cs objects.cs: Move tests accessing static variables as well.
19858
19859         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19860
19861 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19864
19865         * driver.c: Always print failed tests.
19866
19867         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19868         frame pointer.
19869
19870         * *ia64*: Ongoing IA64 work.
19871
19872 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19873
19874         * basic.cs: Add tests for add.ovf. Fix warnings.
19875
19876 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19877
19878         * driver.c (mono_main): Avoid crash if no argument is passed to
19879         --break;  Do not use g_error, but f_printf.   And fix all other
19880         ocurrences of the same crash.
19881
19882 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19883
19884         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19885         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19886         Fixes #74742.
19887
19888 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * *-ia64.*: Add beginnings of IA64 backend.
19891
19892         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19893
19894 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19895
19896         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19897         Fixes #74925.
19898
19899         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19900
19901         * mini-amd64.c: Fix a warning.
19902
19903 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19906         in float_neg. Fixes #74897.
19907
19908         * mini-amd64.c (emit_call): Fix another near call bug.
19909
19910 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19911
19912         * declsec.c: Keep the appdomain information in the structure. Added a 
19913         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19914         value gets overwritten).
19915         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19916         an MonoAppDomain member to MonoSecurityFrame.
19917         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19918         used in the stack walk. Now use a MonoArray which grow (double) when
19919         it gets full.
19920
19921 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19922
19923         * mini.c: Re-enabled runtime cleanup, since running threads should
19924         now properly stop when exiting.
19925
19926 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19927
19928         * mini-codegen.c: New file contaning the arch-independent local
19929         register allocator. Not used by any architectures yet.
19930
19931         * mini.h linear-scan.c: Merge some changes from the 
19932         mini-xp-local-regalloc branch.
19933
19934 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19935
19936         * mini-amd64.c (emit_call): Fix calls to native functions when the
19937         runtime is compiled as a shared library. Fixes #74756.
19938
19939         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19940         on a literal field. Fixes #74751.
19941
19942 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19943
19944         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19945
19946 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19947
19948         * objects.cs: Add missing null casting test.
19949
19950 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19951
19952         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19953         in wrapper methods. Also rename 'address' variable to 'offset'.
19954
19955 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19958         warnings.
19959         
19960         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19961
19962         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19963         work on windows.
19964
19965 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19966
19967         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19968
19969 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19970
19971         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19972         just the last bytes.
19973
19974 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19975
19976         * aot.c (mono_compile_assembly): Fix warning.
19977
19978         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19979         by the _MSC_VER stuff.
19980
19981 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19982
19983         * inssel-long.brg: Fix #74588.
19984
19985         * cpu-amd64.md: Fix #74591.
19986
19987         * iltests.il: Add new regression tests.
19988
19989 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19990
19991         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19992         valuetype.
19993
19994 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19995
19996         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19997
19998         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19999         from Bill Middleton <flashdict@gmail.com>.
20000
20001 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * arrays.cs: Add new regression test. Fix warnings.
20004
20005 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20008         and leakage in CKFINITE.
20009
20010         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20011         this to a null op since it is called on amd64 too.
20012
20013         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20014
20015         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20016         body since this is not used on amd64.
20017         
20018         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20019
20020         * mini-amd64.c: Remove obsolete fixmes.
20021
20022         * mini.c (print_method_from_ip): Fix debugging support.
20023
20024 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20025
20026         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20027         so that expressions that don't give much gain are not reduced.
20028         * ssapre.h: Likewise.
20029
20030 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20031
20032         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20033
20034         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20035
20036         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20037
20038 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20041
20042         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20043
20044 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20045
20046         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20047         stack touching.
20048
20049         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20050
20051         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20052
20053         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20054
20055         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20056         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20057
20058         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20059
20060         * mini-x86.c: Fix up stack overflow handling.   
20061
20062         * exceptions.cs: Add new regression test.
20063
20064 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20065
20066         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20067         mono_jit_thread_attach.
20068
20069         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20070
20071 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20074         avoid calling constructors using callvirt.
20075
20076         * inssel.brg: Fix #74073.
20077
20078 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20079
20080         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20081         compilation with non-GCC compilers.
20082         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20083         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20084
20085 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20086
20087         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20088         klass->interface_offsets (will likely fix bug#74073).
20089
20090 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20093
20094 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20095
20096         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20097         to amd64_div_reg_size ().
20098         
20099         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20100
20101 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20104
20105 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20106
20107         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20108
20109 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20110
20111         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20112         
20113         * mini.c (mono_precompile_assembly): Load and precompile referenced
20114         assemblies as well. Fixes #74015.
20115
20116 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20117
20118         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20119
20120 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20121
20122         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20123         a lot of checks and (anyway) permissions cannot work until corlib is 
20124         loaded.
20125
20126 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20127
20128         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20129
20130 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20131
20132         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20133         calls (fixes bug#72824).
20134
20135 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20136
20137         * mini.c: fix tail recursion elimination (see test in bug#73936).
20138
20139 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20140
20141         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20142         some fp functions in sse2 mode.
20143
20144 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20145
20146         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20147
20148 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20149
20150         * mini.h mini.c: Add mono_get_jit_tls_key ().
20151
20152         * mini-x86.c: Enable fast TLS support on windows.
20153
20154 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20155
20156         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20157         * mini.c: Check for p/invoke method when generating code. If a
20158         p/invoke method, or it's class, isn't decorated with [Suppress
20159         UnmanagedCodeSecurity] then generate code to call System.Security.
20160         UnmanagedDemand (only if the security manager is active).
20161
20162 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20163
20164         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20165         last change as it seems to cause strange crashes.
20166         
20167 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20168
20169         * *.c: handle unsafe function pointers where needed.
20170
20171 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * mini.c (mono_jit_free_method): Remove the fixme too.
20174
20175 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20176
20177         * mini.c: As discussed, make the code actually free the delegate
20178         thunk now, to enable the debugging of delegate problems, use
20179         MONO_DEBUG=1 when running Mono. 
20180
20181         This takes also care of parts of the leaks as seen by Joe.
20182
20183 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20184
20185         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20186         thread_tls_offset calculation.
20187
20188 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20189
20190         * declsec.c: Reworked linkdemand checks for icall. The previous code
20191         was using the declaration code (untrusted) and didn't work as expected
20192         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20193         specific case.
20194
20195 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20196
20197         * iltests.il: Add new localloc test.
20198
20199         * mini-amd64.c: Handle large stack allocations the same way as on
20200         windows if stack overflow handling is working.
20201         
20202         * mini-amd64.c: Allocate the signal stack using mmap.
20203
20204         * mini.c (sigsegv_signal_handler): Fix reading of context.
20205
20206         * mini-exceptions.c: Fix up stack overflow handling.
20207
20208         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20209
20210         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20211
20212         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20213
20214         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20215
20216         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20217         tramp_init functions as they are no longer needed.
20218
20219 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20220
20221         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20222         
20223         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20224
20225         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20226         
20227         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20228         support that now.
20229
20230         * mini-ops.h: Add OP_LMUL_IMM.
20231
20232         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20233         long mul/div opcodes as intrinsic.
20234
20235         * mini-amd64.c (emit_call): Handle the case when the callee might be
20236         an AOT method.
20237
20238 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20239
20240         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20241         extra safe.
20242         
20243         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20244
20245         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20246
20247 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20248
20249         * mini.c (mono_codegen): Don't leak here, to help people running
20250         monogrind.
20251
20252 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20253
20254         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20255         conversions in sse2 mode.
20256
20257         * basic-float.cs: Add regression test.
20258         
20259         * mini-amd64.c: Reenable sse2.
20260
20261 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20262
20263         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20264
20265 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20266
20267         * driver.c: Copyright text should include 2005.
20268         
20269 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20270
20271         * cpu-amd64.md (load_membase): Fix more max lengths.
20272
20273 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20274
20275         * cpu-amd64.md (load_membase): Fix max length.
20276
20277         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20278
20279         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20280
20281         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20282         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20283
20284         * basic-float.cs: Add rounding regression test.
20285
20286         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20287
20288 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20289
20290         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20291         structures in registers for pinvoke wrappers.
20292
20293 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20294
20295         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20296
20297 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20298
20299         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20300         wrapper to mono_jit_thread_attach.
20301
20302         * mini.c (mini_jit_thread_attach): New jit icall.
20303
20304         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20305         native->managed wrappers.
20306
20307         * exceptions.cs: Add new regression test.
20308
20309         * mini.c (optimize_branches): Check regions in the cbranch to throw
20310         block case as well. Fixes #73242.
20311
20312 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20313
20314         * mini.c: thread safety fixes.
20315
20316 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20317
20318         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20319         patching stuff, since delegates use jump trampolines so there is
20320         no caller.
20321
20322         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20323         jump trampolines.
20324         
20325         * tramp-amd64.c: Fix build.
20326
20327         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20328         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20329
20330         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20331         Rename this to mono_arch....
20332         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20333
20334         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20335
20336         * mini-amd64.c (emit_call): If both the caller and the callee is
20337         guaranteed to have 32 bit addresses, emit a normal call.
20338
20339         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20340
20341         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20342         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20343         method_ptr inside delegates.
20344
20345 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20346
20347         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20348         invalidated. Fixes #73001.
20349
20350         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20351
20352         * mini-x86.c: Only use stdcall for pinvokes on windows.
20353
20354 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20355
20356         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20357         * mini-x86.c: remove unreliable __thread var offset detection,
20358         use the correct accessors and enable by default.
20359
20360 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20361
20362         * mini.c (mono_jit_free_method): Fix memory leak.
20363
20364 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20365
20366         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20367
20368 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20369
20370         * cpu-amd64.md: Fix lengths of atomic opcodes.
20371
20372 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20373
20374         * driver.c: try to not imply using ICU is any good.
20375
20376 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20377
20378         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20379         functions as inline ops.
20380
20381         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20382         some Interlocked functions as inline ops.
20383
20384         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20385
20386         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20387
20388         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20389
20390         * mini.c: Add support for OP_NOT_TAKEN.
20391
20392         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20393         structures in registers for pinvoke wrappers.
20394
20395         * mini-amd64.c: Fix warnings.
20396
20397 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20398
20399         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20400
20401         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20402
20403         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20404         address instead of loading the address from it.
20405
20406         * mini-x86.c: Add support for returning small structs in registers
20407         on Win32. Fixes part of #70864.
20408         
20409 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * trace.c (get_token): Improve error checking.
20412
20413 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20414
20415         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20416
20417 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20418  
20419         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20420         it can be reused for MonoClass.
20421         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20422         _LINKDEMAND.
20423
20424 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20425
20426         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20427         instead of a MonoReflectionMethod. The method information wasn't used
20428         when displaying SecurityException details (but will be now).
20429
20430 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20431
20432         * Makefile.am : windows build fix.
20433
20434 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20435
20436         * iltests.il: Add new regression test.
20437
20438         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20439         #72522.
20440
20441 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20442  
20443         * mini.c: Moved linkdemand check into helper function check_linkdemand
20444         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20445         LDFTN, LDVIRTFTN).
20446
20447 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20448
20449         * declsec.c: Added statistics counter for different kinds of 
20450         LinkDemands.
20451         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20452         (and commented) declaration.
20453         * mini.c: Added statistics counter for security Demand code 
20454         generation. Added display of security statistics.
20455
20456 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20457
20458         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20459         Fix compilation errors under gcc-2.95.
20460
20461 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20462
20463         * mini.c, driver.c: Use the new jit trampoline hashtable
20464
20465 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20466
20467         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20468
20469 2005-02-11  Martin Baulig  <martin@ximian.com>
20470
20471         * debug-mini.c (mono_debug_close_method): Free the line number array.
20472
20473 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20474
20475         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20476         icalls.
20477
20478         * mini.h: Bump AOT file format version. 
20479
20480 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20481
20482         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20483         APTC and P/Invoke.
20484         * declsec.h: Added macros to get/set lazyly initialized security 
20485         informations about assemblies. Added new enum for different type of
20486         possible LinkDemand violation. Added function to check LinkDemands.
20487         * mini.h: Added a field to MonoCompile to hold any security violation
20488         detected when JITting a method (so it can be thrown later).
20489         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20490         and CEE_CALLVIRT. Added code to throw exception at the end of
20491         mini_method_compile (note: the exception is unhandled right now).
20492
20493 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20494
20495         * mini.c, jit-icalls.c: use the managed implementation of
20496         memset for initobj and memset, to avoid managed <-> unmanaged
20497         transitions.
20498
20499 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20500
20501         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20502         optimization if it would need a GOT var.
20503
20504         * basic.cs: Add tests for constant propagation and switch statements.
20505
20506         * ssa.c: Fix out-of-range constant propagation and switch statements.
20507
20508 2005-02-09    <vargaz@freemail.hu>
20509
20510         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20511
20512 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20513
20514         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20515
20516 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20517
20518         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20519
20520 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20521
20522         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20523         arithmetic operations.
20524
20525 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20526
20527         * mini-ppc.c: add a workaround for broken user code that
20528         DllImports vararg functions with non-vararg signatures.
20529
20530 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20531
20532         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20533         meaningfull error message for assemblies written in Managed C++.
20534
20535         * tramp-amd64.c mini-amd64.h: Add support for 
20536         create_trampoline_from_token ().
20537
20538         * aot.c mini-x86.c abcremoval.c: Applied patch from
20539         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20540
20541 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20542
20543         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20544         which takes a MonoImage/token as parameter instead of a MonoMethod.
20545
20546         * aot.c: Use the new trampoline for initializing vtables.
20547
20548         * aot.c: Add support for ldfld/stfld_remote wrappers.
20549
20550         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20551         rules for compare <MEM>, IMM.
20552
20553         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20554
20555         * aot.c: Handle inherited finalizers correctly.
20556
20557 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20558
20559         * inssel.brg (stmt): Add a missing _setup_... ().
20560
20561         * aot.c: Save some parts of the class state to the AOT file and use it
20562         to recompute that state when a class is initialized.
20563
20564         * mini.c: Install AOT hooks into the runtime.
20565
20566         * mini.h: Bump AOT file format version.
20567         
20568         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20569         Fixes #72148.
20570
20571         * iltests.il: Add new test.
20572
20573 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20574
20575         * mini.c: fix typo.
20576
20577 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20578
20579         * mini.c: setup the statistical profiler in the thread attach
20580         callback to cope with the new single thread code.
20581
20582 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20583
20584         * mini-ppc.c: ensure we have enough room for the profiler
20585         calls (fixed bug#72084).
20586
20587 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20588
20589         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20590         it.
20591
20592 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20593
20594         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20595
20596 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20597
20598         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20599         to succesfully execute parrotbench).
20600         * ssapre.h: Likewise.
20601
20602 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20603
20604         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20605         variable for stores to method arguments (fixes a SSAPRE issue).
20606
20607 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20608
20609         * mini.c: handle value types in dup, fixes gen-112.cs.
20610
20611 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20612
20613         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20614         sequence for calls in dynamic methods to avoid thunks.
20615
20616 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20617
20618         * mini.c: correctly remove dynamic methods from the hashtable.
20619
20620 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20621
20622         * driver.c: Disabled SSAPRE until fix the bug that appears
20623         in IronPython's parrotbench.
20624
20625 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20626
20627         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20628
20629         * mini.c (mono_method_to_ir): Revert the previous change.
20630         
20631         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20632         when AOT compiling.
20633
20634         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20635         mono_jit_info_table_find () etc. when running under valgrind.
20636
20637         * inssel.brg: Fix warnings.
20638
20639         * mini-exceptions.c: Fix warnings.
20640
20641 2005-01-31  Martin Baulig  <martin@ximian.com>
20642
20643         * driver.c (compile_all_methods_thread_main): Don't try to compile
20644         generic methods or anything which has type parameters.
20645
20646 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20647
20648         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20649
20650         * TestDriver.cs: Add --verbose flags.
20651
20652         * graph.c ssa.c: Fix 64 bit warnings.
20653         
20654         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20655         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20656         Fix 64 bit warnings.
20657
20658         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20659         variable not spotted by gcc.
20660         
20661         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20662         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20663         X86_COMPARE_MEMBASE opcodes.
20664
20665         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20666
20667 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20668
20669         * *: MonoMethod->signature might be NULL now. You *MUST* use
20670         mono_method_signature.
20671
20672 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20673
20674         * driver.c (compile_all_methods_thread_main): Compile the methods
20675         without invoking cctors.
20676
20677 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20678
20679         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20680         * basic-calls.cs: test for the above.
20681
20682 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20683
20684         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20685         MonoJitInfo changes.
20686
20687 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20690         eagerly if it contains dynamic methods.
20691         
20692         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20693
20694         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20695         trace, it is now computed by an icall from trace_ips.
20696         
20697         * mini-exceptions.c: Fix a warning.
20698
20699 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20700
20701         * mini-exceptions.c: don't bother getting stack trace info if
20702         it's not going to be used.
20703
20704 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20705
20706         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20707         ssapre-mini-ops.h.
20708
20709 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20710
20711         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20712
20713         * aot.c: Avoid calling mono_method_get_header () if not needed.
20714
20715         * mini.h: Bump AOT file format version.
20716         
20717         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20718
20719         * mini.c (mono_print_tree): Print more info for calls.
20720
20721 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20722
20723         * declsec.h: Remove warning by adding missing include for marshal.h
20724
20725 2005-01-26  Martin Baulig  <martin@ximian.com>
20726
20727         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20728         `ip' twice.
20729
20730 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20731
20732         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20733         flags.
20734
20735         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20736
20737         * aot.c (mono_compile_assembly): Fix a warning.
20738
20739 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20740
20741         * declsec.c: Look for security attributes on the original MonoMethod 
20742         (and not the wrapped one). This fix permissions on icalls.
20743
20744 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20745
20746         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20747
20748         * mini.c (mono_allocate_stack_slots): Add a fixme.
20749
20750         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20751
20752 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20753
20754         * inssel.brg: optimize casts of sealed types (more
20755         optimizations waiting for fixes in remoting).
20756
20757 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20758
20759         * inssel.brg (stmt): Add another dummy rule.
20760
20761         * driver.c: Fix warnings.
20762
20763         * driver.c (mono_main): If running under valgrind, instruct glib to use
20764         the system allocation functions so valgrind can track the memory
20765         allocated by the g_... functions.
20766
20767         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20768
20769         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20770
20771         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20772
20773         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20774         variables in try regions.
20775
20776         * mini.c (mini_method_compile): Don't disable optimizations on large
20777         methods when AOT compiling.
20778
20779         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20780         allocate stack slots. Not yet used.
20781
20782 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20783
20784         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20785
20786 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20787
20788         * mini-ppc.c: make the branch info relative as the code
20789         buffer can be reallocated.
20790
20791 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20792
20793         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20794         * driver.c: Removed the AOT/security restriction. Now initialize the
20795         security manager (in metadata) if --security is used.
20796         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20797         rather than the pointer to declarative security, when AOT is used.
20798
20799 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20800
20801         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20802         basic blocks, reduced intrinsic exception throwing code size.
20803
20804 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20805
20806         * driver.c (mini_usage): Reorder the usage screen.
20807
20808 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20809
20810         * mini.c (mono_resolve_patch_target): Fix warning.
20811
20812 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20813
20814         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20815         previous patch.
20816
20817         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20818
20819         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20820         breaks the amd64 build.
20821
20822         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20823         register allocation. Fixes #71454.
20824
20825         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20826
20827         * arrays.cs: Add new regression test.   
20828
20829 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20830
20831         * ssapre.c: Turned usage of snprintf to GString.
20832         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20833         (I left it on by mistake in my previous commit).
20834
20835 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20836
20837         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20838         on cond branch optimization (fixes bug# 71515).
20839
20840 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20841
20842         * abcremoval.c: Fixed bug 71062.
20843         * abcremoval.h: Likewise.
20844
20845 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20846
20847         * mini.c: Added a new functionality to optimize_branches, the removal
20848         of useless basic blocks, and fixed some problem in the removal of
20849         critical edges; some utility functions added for both purposes.
20850         * ssapre.c: Added complex expression support, and fixed bug 70637.
20851         * ssapre.h: Likewise.
20852         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20853         enabled in SSAPRE.
20854         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20855         * driver.c: Re-enabled SSAPRE.
20856
20857 2005-01-19  Martin Baulig  <martin@ximian.com>
20858
20859         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20860         the result of mono_get_method_constrained().
20861
20862 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20863
20864         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20865         manager.
20866
20867 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20868
20869         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20870         be detected.  Fixes #59296.
20871
20872 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20873
20874         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20875         which can happen. Fixes #71361.
20876
20877 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20878
20879         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20880         manager.
20881
20882 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20883
20884         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20885         appdomain-unload.exe to fail.
20886         
20887         * mini.c: Fix some memory leaks.
20888
20889 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20890
20891         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20892         Fixed bug and sped up some codepaths.
20893
20894 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20895
20896         * mini.c: Fix some memory leaks.
20897
20898         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20899         conversion.
20900
20901         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20902
20903         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20904         #71320.
20905
20906         * iltests.il: Add regression test for #71320.
20907
20908 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20909
20910         * mini.c (mono_codegen): Fix installation of profiler hooks.
20911
20912         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20913
20914 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20915
20916         * mini.h, mini.c, cfold.c: optimize access to enum
20917         readonly fields, too. Eval conditional branches if possible
20918         to perform unreachable code removal in more cases.
20919
20920 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20921
20922         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20923
20924         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20925         code manager.
20926
20927         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20928         WinXP DEP. Fixes #71244.
20929
20930 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20931
20932         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20933
20934 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20935
20936         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20937
20938 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20939
20940         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20941         changes.
20942
20943         * mini.h: Bump AOT version.
20944
20945         * mini.h (MonoCompile): Change exvar to a hash table.
20946
20947         * mini.c: Allocate a separate exvar for each handler block.
20948
20949         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20950
20951         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20952         ex var with the pending exception and only throw if the two are equal.
20953         Fixes #68552.
20954         
20955         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20956
20957         * mini-x86.c: Fix warnings.
20958
20959         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20960         used by all the ports now.
20961
20962         * aot.c: Add write-symbols and save-temps options.
20963
20964 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20965
20966         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20967
20968 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20969
20970         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20971         operations.
20972
20973         * tramp-s390.c: Check vtable slot belongs to the domain.
20974
20975         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20976         as per other platforms.
20977
20978         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20979
20980 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20981
20982         * driver.c: we don't run the Main() code in a subthread anymore.
20983
20984 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20985
20986         * mini.c: added experimental rtc support in the statistical
20987         profiler: if the user has the permission, more accurate statistics
20988         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20989         The MONO_RTC value must be restricted to what the linux rtc allows:
20990         power of two from 64 to 8192 Hz.
20991
20992 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20993
20994         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20995
20996 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20997
20998         * mini-ppc.c: better icache flush for smp.
20999
21000 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21001
21002         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21003
21004         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21005         amd64 port, not yet used.
21006
21007 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21008
21009         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21010         a struct type.
21011
21012 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21013
21014         * driver.c: Added --security option to activate the security manager.
21015         Right now this will allow code generation for declarative demands and
21016         is disabled when AOT is specified.
21017         * mini.c: Add code generation for declarative security demands.
21018         * mini.h: Add mono_use_security_manager as an extern gboolean.
21019
21020 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21023         emitting more dense assembly code.
21024
21025         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21026         exception throwing stuff.
21027
21028 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21029
21030         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21031         dead code.
21032
21033         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21034         left in by mistake.
21035
21036         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21037         fixed.
21038
21039         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21040
21041         * tramp-*.c: Only patch vtable slots if the object is in the current
21042         domain. Fixes appdomain-unload.exe.
21043
21044         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21045         
21046         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21047         x86 branch.
21048
21049 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21050
21051         * mini.c (reverse_branch_op): New helper function.
21052
21053         * mini.c (optimize_branches): Run the new optimization only on 
21054         platforms which support it. Also reverse all kinds of branches.
21055
21056         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21057
21058         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21059         a throw statement.
21060
21061         * mini.c (optimize_branches): Reverse not-equals branches if the false
21062         bblock is a throw. This happens a lot of time with argument checking in
21063         corlib.
21064
21065         * mini.c (mono_codegen): Add support for placing basic blocks after
21066         the function epilogue.
21067
21068         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21069         function epilogue.
21070         
21071 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21072
21073         * mini.c (setup_stat_profiler): Only set this up if the platform
21074         supports ITIMER_PROF.
21075
21076 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21077
21078         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21079         previous patch.
21080
21081         * inssel.brg: Fix a warning.
21082
21083 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21084
21085         * mini.c: added support for statistical profiler 
21086         (run with: --profile=default:stat).
21087
21088 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21089
21090         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21091
21092         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21093
21094         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21095         related to global registers from the amd64 port.
21096
21097 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21098
21099         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21100
21101         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21102         with global registers.
21103         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21104
21105         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21106
21107 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21108
21109         * debug-mini.c (encode_value): Fix off-by-one.
21110
21111         * aot.c (encode_value): Likewise.
21112
21113         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21114
21115 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21116
21117         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21118         AOT.
21119
21120         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21121         
21122         * aot.c (emit_method_info): Increase size of temp buffer.
21123
21124         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21125         the AOT case.
21126
21127 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21128
21129         * aot.c (emit_method_info): Fix build.
21130         
21131         * aot.c: Further rework of the AOT file format to reduce the size of
21132         the method info data.
21133
21134         * mini.h: Bump AOT file format version.
21135
21136 2004-12-27  Martin Baulig  <martin@ximian.com>
21137
21138         * mini.c (mini_get_method): New static method; call
21139         mono_get_method_full() and mono_get_inflated_method().
21140         (mono_method_to_ir): Use mini_get_method() instead of
21141         mono_get_method_full(). 
21142
21143 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21144
21145         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21146
21147 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21148
21149         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21150
21151         * inssel-amd64.brg: Add some optimization rules.
21152
21153 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21154
21155         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21156         standard not GC'd stuff is fine.
21157
21158 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * aot.c: Rework the AOT file format to get rid of most of the global
21161         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21162
21163         * mini.h: Bump AOT file format version.
21164         
21165 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21166
21167         * mini.h: Bump AOT file format version.
21168
21169         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21170         address is inside a GOT.
21171
21172         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21173
21174         * cpu-pentium.md: Increase the maximum size of some instructions which
21175         might involve a got access.
21176         
21177         * mini.c (get_method_from_ip): Another debug helper function.
21178
21179         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21180         when got var accesses are created during the decompose phase.
21181
21182         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21183
21184         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21185         argument mini_compile_method and to MonoCompile, and use this to
21186         determine whenever a given method is compiled for AOT. This allows the
21187         other methods compiled during AOT compilation to be free of AOT stuff,
21188         so the backends does not need to add special support for them by
21189         creating a fake GOT etc.
21190
21191         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21192         longer needed.
21193
21194 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21195
21196         * mini.c (mono_method_to_ir): It turns out that some of the
21197         x-appdomain wrappers are lax with types, so just ignore this for
21198         all wrappers.
21199
21200         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21201         at the vtable->klass. If it is non-shared code we can just use the
21202         vtable.
21203
21204 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21205
21206         * mini-ppc.c: access MonoDomain from tls, too.
21207
21208 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21209
21210         * declsec.c: Removed unused variable (and related warning ;-)
21211
21212 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21213
21214         * iltests.il: New test for LDELEMA on an array of ref types.
21215
21216         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21217         all ldelema's on reftypes.
21218         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21219         it was the wrong place to put it.
21220
21221         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21222         register to pop to make this cleaner, at the request of Paolo.
21223
21224 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21225
21226         * mini-ops.h (OP_GETHASHCODE): New op.
21227
21228         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21229
21230         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21231         operation.
21232
21233         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21234         by 25%.
21235         
21236         * mini-x86.c (mono_arch_output_basic_block): Rather than
21237
21238         add ebp, 4
21239
21240         Emit
21241
21242         pop edx
21243
21244         The first is 3 bytes while the second is 1. This saves 36 kb on
21245         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21246         see a small boost because of icache locality.
21247
21248         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21249
21250 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21251
21252         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21253         started code sharing with the generic code.
21254
21255 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21256
21257         * mini-ppc.c, cpu-g4.md: added code for direct access to
21258         tls data slots.
21259
21260 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21261
21262         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21263          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21264         to OP_TLS_GET.
21265
21266 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21267
21268         * declsec.c|h: Added functions to cache the declarative stack modifiers
21269         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21270         structure.
21271         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21272         created. Register internal calls for System.Security.SecurityFrame::
21273         _GetSecurityFrame and _GetSecurityStack.
21274         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21275         the definitions for the new stack walk/callback mechanism.
21276         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21277         first security frame for LinkDemands and InheritanceDemands) and
21278         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21279         from lupus.
21280         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21281         walk initialization (lupus).
21282
21283 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21284
21285         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21286         idiom.
21287         (handle_loaded_temps): Do not create a temporary variable for
21288         things that we know are temps. They will never be modified.
21289         (mono_spill_call): Set MONO_INST_IS_TEMP
21290         (mono_emulate_opcode): ditto
21291         (emit_tree): ditto
21292         (mono_method_to_ir.CEE_DUP): ditto
21293
21294 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21295
21296         * mini.c (type_to_eval_stack_type): Make this handle the void type
21297         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21298         (emit_tree): use ip_in_bb to special case some common idioms
21299         Update all callers to pass in the IP.
21300         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21301
21302         This gives us a nice 2% speedup in mcs bootstrap.
21303
21304         * mini-x86.c (peephole_pass): Peephole pass to make
21305         mov  [foo], eax
21306         push [foo]
21307
21308         into
21309
21310         mov [foo], eax
21311         push eax
21312
21313         * mini.c (ip_in_bb): new method.
21314         (mono_method_to_ir): use this method rather than doing the hash
21315         lookup ourselves.
21316
21317         * linear-scan.c (mono_linear_scan): When expiring actives, you
21318         don't need to keep around variables that expire on this
21319         instruction. This makes it so that:
21320              a = b + 1
21321         will turn into:
21322              store (ebx add (ebx, 1))
21323         which will become
21324              add ebx, 1
21325
21326 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21327
21328         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21329         combination to avoid doing two copies. Fix up problems with previous
21330         patch.
21331
21332         * mini.c: Fix 64 bit warnings.
21333
21334         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21335
21336 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21337
21338         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21339         changes from the x86 code.
21340
21341         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21342
21343 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21344
21345         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21346         throwing code to reduce its size, unify the AOT and non-aot code and 
21347         get rid of relocations in the AOT case.
21348
21349         * mini-x86.h mini.c exceptions-x86.c 
21350         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21351         raise corlib exceptions which doesn't require relocations in the 
21352         caller.
21353
21354         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21355
21356 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21357
21358         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21359         needed.
21360
21361         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21362         in the AOT case.
21363
21364 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21365
21366         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21367         with add function when used from Inc/dec atomic 
21368         functions. Re-enabled optimization on x86.
21369         * mini-ops.h: renamed atomic_add functions to
21370         allow _add to match the Interlocked::Add and
21371         _add_next to match Interlocked::Inc/Dec.
21372
21373 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21374
21375         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21376         linking of BBs to the end BB, and enabled SSAPRE also with
21377         consprop and copyprop (which was prevented by that bug).
21378
21379 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21380
21381         * mini-x86.c: disabling the Interlocked optimizing code. 
21382
21383 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21384
21385         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21386         file version check.
21387         
21388 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21389
21390         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21391         interlocked optimization due lack of support on x86, rewrote 
21392         exchange to take into account that base may be in eax.
21393         
21394         xsp works again; activated Interlocked optimizing code.
21395         
21396 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21397
21398         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21399
21400 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21401
21402         * mini-ops.h: Add new opcodes.
21403
21404         * mini.h: Add new patch types. Add got_var to MonoCompile.
21405
21406         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21407         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21408         make it work with all kinds of patchable code.
21409
21410         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21411         address of the GOT, and referencing entries in the GOT.
21412
21413         * mini.c: Add code to load the GOT address if needed by an opcode.
21414
21415         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21416         independent AOT code on the x86 using an elf-style Global Offset Table.
21417
21418 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21419
21420         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21421
21422 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21423
21424         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21425         when running xsp.
21426
21427 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21428
21429         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21430         of Interlocked:Increment/Decrement/Add as inline ops.
21431         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21432
21433 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21434
21435         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21436         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21437
21438 2004-12-12  Duncan Mak  <duncan@ximian.com>
21439
21440         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21441         again. `patch_info->table_size' is no longer valid after Zoltan's
21442         commit #37636.
21443
21444 2004-12-12  Martin Baulig  <martin@ximian.com>
21445
21446         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21447         if we are the "real" method, ie. not an inlined method inside it.
21448
21449 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21450
21451         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21452         before we look in the special fields table. This fixes
21453         ../tests/thread-static-init.cs.
21454
21455 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21456
21457         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21458         for Array get_Rank and get_Length. Fixes bug #70465.
21459
21460 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21461
21462         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21463         separate structure to reduce the size of MonoJumpInfo.
21464
21465 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21466
21467         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21468
21469 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21470
21471         * mini.c (mini_get_inst_for_method): Changed to allow ports
21472         to return a MonoInst instead of opcode 
21473         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21474         
21475         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21476         Allow ports to return a created MonoInst instead of op-code, will enable
21477         new optimizations.
21478         (renamed mini_get_opcode_for_method to better reflected the functionality)
21479
21480 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21481
21482         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21483
21484 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21485
21486         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21487         Fixes #69985.
21488
21489 2004-12-08  Martin Baulig  <martin@ximian.com>
21490
21491         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21492         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21493
21494 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21495
21496         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21497         correctly.
21498
21499         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21500         arithmetic.
21501
21502 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21503
21504         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21505
21506 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21507
21508         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21509         bug introduced by the previous patch.
21510
21511 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21512
21513         * mini-ppc.c, objectc.cs: handle large structs passed by value
21514         (fixes bug #69972).
21515
21516 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21517
21518         * mini-ppc.c: OP_ARGLIST implementation from
21519         Geoff Norton  <gnorton@customerdna.com>.
21520
21521 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21522
21523         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21524         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21525
21526 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21527
21528         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21529
21530 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21531
21532         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21533         support.
21534
21535 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21536
21537         * mini-sparc.c: Zero out localled-ed memory.
21538
21539         * iltests.il: Add tests for zeroing out localloc-ed memory.
21540
21541 2004-12-04  Martin Baulig  <martin@ximian.com>
21542
21543         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21544         mono_method_get_signature_full().       
21545
21546 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21547
21548         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21549         and some utility functions (always for SSAPRE), integrated SSAPRE.
21550         * mini.h: Likewise.
21551         * driver.c: Added ssapre option.
21552         * ssa.c: Small fix on OP_ARG handling.
21553         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21554         * Makefile.am: Likewise.
21555
21556 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21557
21558         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21559         now in the xp code.
21560
21561         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21562         icall.
21563
21564 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21565
21566         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21567         
21568         * cpu-s390.md : Increase instruction length of oparglist.
21569
21570         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21571
21572 2004-11-30  Martin Baulig  <martin@ximian.com>
21573
21574         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21575         virtual generic methods.  We call a special helper_compile_generic_method()
21576         icall to retrieve the method from the vtable, inflate and compile
21577         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21578
21579         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21580
21581 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21582
21583         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21584
21585 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21586
21587         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21588         Fixes #69929.
21589
21590 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21591
21592         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21593         platforms with PIC aot.
21594
21595 2004-11-28  Martin Baulig  <martin@ximian.com>
21596
21597         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21598         Fixes gen-112.cs.
21599
21600 2004-11-28  Martin Baulig  <martin@ximian.com>
21601
21602         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21603         the result of mono_type_get_underlying_type() to check whether
21604         we're byref.
21605
21606 2004-11-26  Martin Baulig  <martin@ximian.com>
21607
21608         * mini.c
21609         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21610         in the g_assert().
21611
21612 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21613
21614         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21615         the same way as the other arguments so they won't get clobbered.
21616
21617         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21618         calls through R11 since it is clobbered by the trampoline code.
21619
21620 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21621
21622         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21623         pick up in-tree mscorlib.dll.
21624
21625 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21626
21627         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21628
21629         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21630         runtime data/code are now stored in a table similar to the GOT in ELF. 
21631         This allows the code itself to be position independent.
21632
21633         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21634         loading changes.
21635
21636         * aot.c: Attach ELF type (object/function) directives to all global
21637         symbols.
21638
21639         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21640
21641         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21642
21643         * mini-amd64.h: Turn on PIC AOT code.
21644
21645         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21646         returning the offset within an OP_AOTCONST instruction where the GOT
21647         offset needs to be added.
21648
21649         * mini.h: Bump AOT file format version.
21650
21651 2004-11-25  Martin Baulig  <martin@ximian.com>
21652
21653         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21654         uninflated generic methods.
21655
21656 2004-11-25  Martin Baulig  <martin@ximian.com>
21657
21658         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21659
21660 2004-11-24  Martin Baulig  <martin@ximian.com>
21661
21662         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21663         original klass (this only applies for generic instances).
21664
21665 2004-11-24  Martin Baulig  <martin@ximian.com>
21666
21667         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21668         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21669         that array).
21670
21671 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21672
21673         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21674         localloc. Fixes #69678.
21675
21676         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21677         
21678 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21679
21680         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21681         used SSE registers on pinvoke calls. Fixes #69774.
21682
21683 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21684
21685         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21686         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21687
21688 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21689
21690         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21691         Refer directly to the mcs/ tree.
21692
21693 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21694
21695         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21696         Check if a trampoline for a synchronized method is required. 
21697
21698 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21699
21700         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21701         with localloc if needed. Throe arithmetric exception in
21702         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21703         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21704
21705 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21706
21707         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21708         types before switching on type.  Fixes #69622.
21709
21710 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21711
21712         * Makefile.am (check-local): New.  Integrate into 'make check'.
21713         (MCS,RUNTIME): Define using in-tree mono and mcs.
21714         (ILASM): New.
21715         (%.exe): Use $(ILASM).
21716
21717 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21718
21719         * mini-ppc.c: adjust initial prolog size (bug #69691).
21720
21721 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21724         #69664.
21725
21726 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21727
21728         * Makefile.am (clean-local): Rename from 'clean'.
21729
21730 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21731
21732         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21733         to mono_arch_is_int_overflow. 
21734         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21735         SIGFPE events.
21736
21737 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21738
21739         * declsec.c|h: New files to support declarative security attributes.
21740         Added function to check if a method has (applicable) security.
21741         * mini.c|h: Add check for declarative security attributes in
21742         mono_method_check_inlining.
21743         * Makefile.am: Added declsec.c and declsec.h to the build.
21744
21745 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21746
21747         * mini.c, mini.h: update to keep dynamic code info per-domain.
21748
21749 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21750
21751         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21752         (mini_init): Get rid of it from here too.
21753
21754 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21755
21756         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21757         implemented OP_RETHROW (patch by Geoff Norton
21758         <gnorton@customerdna.com>).
21759
21760 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21761
21762         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21763         between appdomains.  Fixes appdomain-unload on PPC.
21764
21765 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21766
21767         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21768         mini-exceptions.c: handle the new wrapper types.
21769         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21770         token value as a MonoClass* when compiling a wrapper.
21771         mono_jit_create_remoting_trampoline now takes an additional
21772         MonoRemotingTarget parameter.
21773         
21774 2004-11-10  Martin Baulig  <martin@localhost>
21775
21776         * mini.c (mono_method_to_ir): Use `generic_container->context'
21777         rather than creating a new one.
21778
21779 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21780
21781         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21782
21783         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21784
21785 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21786
21787         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21788         the experimental aot cache stuff.
21789
21790 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21791
21792         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21793         mini-exceptions.c: update to exception clause structure changes.
21794
21795 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21796
21797         * exceptions-x86.c (throw_exception): Fix warnings.
21798
21799         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21800         for OP_RETHROW.
21801
21802 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21803
21804         * exceptions-sparc.c (get_throw_exception): Really fix this.
21805
21806 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21807
21808         * tramp-*.c: we no longer support icalls without wrappers, so
21809         a bit of code can be removed here
21810
21811 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21812
21813         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21814         patch.
21815
21816         * cpu-sparc.md: Add op_rethrow.
21817
21818         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21819
21820         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21821
21822         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21823         * mini-ops.h: Add OP_RETHROW.
21824
21825         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21826
21827         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21828
21829 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21830         
21831         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21832         Makes the output much easier to read
21833
21834 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21835
21836         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21837         prevents another huge leak when compiling with ssa. Secondly, the
21838         performance of doing this rather than freeing the lists is much
21839         better. GList does a lock every time you allocate a list link,
21840         so that it can use a memory pool. So, it is better to just use
21841         a memory pool of our own.
21842         
21843         * ssa.c, linear-scan.c: replace g_list_remove_link with
21844         g_list_delete.  The remove one does not free the GList, so we were
21845         leaking memory. On -O=all --compile-all with corlib, this cut down
21846         3 MB of allocations.
21847
21848 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21849
21850         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21851
21852         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21853
21854         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21855         into a new function mono_create_jit_trampoline ().
21856
21857 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21858
21859         * trace.c (get_spec): Allow tracing of classes without a namespace.
21860
21861 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21862
21863         * mini.c: Fix pointer overwrite in mini_method_compile.
21864
21865 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21866
21867         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21868         The darwin ABI needs some special handling for 1 and 2 byte structs
21869         Lets use lbz/lhz instead of lwz everywhere.
21870         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21871         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21872         Use stb/sth for the former, and put the latter always on stack instead of in
21873         argument registers.
21874
21875 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21876
21877         * trace.c (is_filenamechar): Add '_'.
21878
21879 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21880
21881         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21882
21883         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21884
21885 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21886
21887         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21888         depends on libmonogc. Fixes #68805.
21889
21890 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21891
21892         * mini.c (mono_jit_free_method): Provide extra information for
21893         this error.  Currently this leaks, but will be turned into a
21894         developer option in the future.
21895
21896 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21897
21898         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21899
21900 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21901
21902         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21903         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21904         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21905
21906 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21907
21908         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21909         trampolines for AOT code.
21910
21911 2004-10-22    <vargaz@freemail.hu>
21912
21913         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21914         constructed types. Fixes #68136.
21915
21916 2004-10-21  Martin Baulig  <martin@ximian.com>
21917
21918         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21919         if it returns true, unwind the stack to the call instruction.
21920
21921 2004-10-21    <vargaz@freemail.hu>
21922
21923         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21924
21925         * mini.h: Bump AOT version number.
21926
21927         * objects.cs: Add another test for unbox trampolines.
21928
21929         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21930         valuetype methods.
21931
21932 2004-10-20    <vargaz@freemail.hu>
21933
21934         * driver.c: Add SHARED to the set of optimizations tested.
21935
21936         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21937
21938         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21939         used by CEE_NEWARR.
21940
21941         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21942
21943 2004-10-20  Martin Baulig  <martin@ximian.com>
21944
21945         * mini-exceptions.c (mono_handle_exception): Call
21946         mono_debugger_handle_exception() to tell the debugger about
21947         catch/finally clauses.
21948
21949 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21950
21951         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21952
21953         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21954         #68447.
21955
21956 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21957
21958         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21959         methods as their native size, fixed bug #57543, #57545.
21960         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21961         This saves a temporary register and mullw call down into 1 (minor perf
21962         increase for cases like sum = sum * 5;  This use to translate into:
21963             li r11,5
21964             mullw r28,r28,r11
21965         It now translates to
21966             mulli r28,r28,5
21967
21968 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21969
21970         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21971         #68388.
21972
21973 2004-10-11  Martin Baulig  <martin@ximian.com>
21974
21975         * mini.c (mono_method_to_ir): If we're a generic method, get the
21976         MonoGenericContainer from our MonoMethodNormal and create a
21977         MonoGenericContext from it.
21978
21979 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21980
21981         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21982
21983         * basic-long.cs: Add test for checked i8->i2 cast.
21984
21985 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21986
21987         * inssel-ppc.brg: added a couple of speedup rules.
21988
21989 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21990
21991         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21992         to speed up rebuilds.
21993
21994 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21995
21996         * mini-s390.c: Minor fix to OP_OR_IMM.
21997
21998 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21999
22000         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22001         better. Fixes appdomain-unload.exe on sparc.
22002
22003 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22004
22005         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22006         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22007         see bug 67324.
22008
22009 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22010
22011         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22012
22013 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22014
22015         * mini.c: Always generate a field read/write wrapper for members
22016         of the class MarshalByRefObject since the actual instance could
22017         be a CBO.
22018
22019 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22020
22021         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22022
22023 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22024
22025         * driver.c mini.h trace.c: Move the setting of the main assembly into
22026         a separate function called mono_trace_set_assembly () and call it after
22027         actually loading the main assembly. Fixes #66872.
22028
22029 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22030
22031         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22032         using the code manager.
22033
22034 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22035
22036         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22037
22038 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22039
22040         * cpu-amd64.md: Fix bug in previous patch.
22041         
22042         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22043         #66650.
22044
22045 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22046
22047         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22048         mini-exceptions.c: updates for changed stack walk interface.
22049
22050 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22051
22052         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22053
22054 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22055
22056         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22057
22058 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22059
22060         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22061         since assemblies can't be unloaded.
22062         
22063 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22064
22065         * cpu-amd64.md: Fix more instruction lengths.
22066
22067         * cpu-amd64.md: Fix lengths of some instructions.
22068
22069 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22070
22071         * inssel.brg: Make the array ldelema check aot friendly.
22072
22073 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22074
22075         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22076
22077         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22078
22079 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22080
22081         * mini-x86.c: Fix build.
22082
22083         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22084         mono_type_get_underlying_type () helper function to simplify code.
22085         
22086 2004-09-09  Martin Baulig  <martin@ximian.com>
22087
22088         * mini-amd64.c: Don't access `type->data.klass' directly, call
22089         mono_class_from_mono_type() instead since the type may be a
22090         generic instance.
22091
22092 2004-09-09  Martin Baulig  <martin@ximian.com>
22093
22094         * mini-amd64.c (get_call_info): Fix support for generic instances.
22095         (add_valuetype): Use mono_class_from_mono_type() to get the class
22096         since we can be a generic instance.
22097
22098 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22099
22100         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22101
22102 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22103
22104         * liveness.c: reset spill costs on each scan: bug 62107
22105
22106 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22107
22108         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22109         unnecessary line that doesn't compile
22110
22111 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22112
22113         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22114         trampolines, make them call an error function so people can fix their
22115         code.
22116
22117 2004-09-06  Martin Baulig  <martin@ximian.com>
22118
22119         * mini.c (mono_method_to_ir): When initializing locals, handle a
22120         generic instances like a valuetype if it's a valuetype and like a
22121         class if it's a class.
22122
22123 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22124
22125         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22126         stack. Fixes #64674.
22127
22128         * exceptions.cs: Add test for unwinding of call arguments.
22129
22130 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22131
22132         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22133         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22134         set the carry/borrow flag). The sparc and s390 implementations
22135         can now use optimized versions (and simplify the code). ppc bugfixes.
22136
22137 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22138
22139         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22140
22141 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22142
22143         * inssel-amd64.brg: Remove leftover 32 bit rule.
22144
22145         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22146
22147 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22148
22149         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22150         mono_arch_find_jit_info functions into a new function. Fix a memory
22151         leak.
22152
22153         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22154         refactored code.
22155         
22156 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22157
22158         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22159         as well.
22160         
22161         * exceptions.cs: Add array size tests.
22162
22163         * mini.c: Allocate a separate icall wrapper for each arity of 
22164         mono_array_new_va. Fixes #59509.
22165
22166         * exceptions.cs: Add testcase for 64578.
22167
22168         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22169
22170         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22171         
22172 2004-09-02  Martin Baulig  <martin@ximian.com>
22173
22174         * mini.c (mono_method_to_ir): When initializing the locals, call
22175         handle_initobj() on the generic instance itself, not its
22176         underlying type.
22177
22178 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22179
22180         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22181         MonoJitInfo for dynamic methods.
22182
22183         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22184
22185         * mini.c: Add support for freeing JIT data for dynamic methods.
22186         
22187 2004-09-01  Martin Baulig  <martin@ximian.com>
22188
22189         * mini-x86.c (is_regsize_var): Added support for generic
22190         instances.
22191         (mono_arch_emit_prolog): Make this compile again, use
22192         `x86_push_imm_template (code)'.
22193
22194 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22195
22196         * mini-x86.c: make all push_imm instructions that get
22197         patched always emit the long form
22198
22199 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22200
22201         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22202         in a per-domain hash.
22203
22204         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22205         types.
22206
22207 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22208
22209         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22210         work.
22211         
22212         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22213         work.
22214
22215         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22216         Beginnings of SSE2 support.
22217
22218         * exceptions.cs: Add more tests for checked int<->uint casts.
22219
22220 2004-08-28  Martin Baulig  <martin@ximian.com>
22221
22222         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22223         generic instances.
22224
22225         * mini.c
22226         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22227         Handle generic instances recursively.
22228
22229 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22230
22231         * iltests.il: test for conv.u8 on a constant
22232
22233 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22234
22235         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22236         LCONV_x4 (shrun_32 (membase)).
22237
22238 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22239
22240         * inssel-x86.brg: c&p rules for push/setret of long
22241
22242 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22243
22244         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22245         compare (regvar, base)
22246
22247         * inssel-x86.brg: more burg love
22248
22249         * inssel.brg: more cleanup
22250
22251         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22252
22253 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22254
22255         * basic-long.cs, basic-calls.cs: new tests for optimization.
22256
22257 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22258
22259         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22260         patch.
22261
22262 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22263
22264         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22265         
22266 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22267
22268         * inssel.brg (mini_emit_memcpy): use 
22269         NO_UNALIGNED_ACCESS to disable memcpy optimization
22270
22271 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22272
22273         * mini-amd64.c: Handle generic types in various places.
22274
22275         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22276
22277 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22278
22279         * mini.c (handle_box): Fix warning.
22280
22281         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22282
22283         * mini-amd64.h: Enable the emit_state optimization.
22284
22285         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22286
22287         * mini-amd64.c: Add some new 64 bit peephole opts.
22288
22289         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22290
22291         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22292
22293         * mini-amd64.c: Register allocator fixes.
22294
22295         * mini.c: Add an optimization to emit_state to avoid allocation of new
22296         registers on some platforms.
22297
22298 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22299
22300         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22301
22302         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22303         allocation. Fixes #63085.
22304
22305         * basic-long.cs: Add new regression test.
22306
22307         * mini-amd64.c: Register allocator improvements.
22308
22309 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22310
22311         * mini-amd64.c (read_tls_offset_from_method): Add another code
22312         sequence.
22313
22314         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22315         instruction sequence for nullifying class init trampolines.
22316
22317         * objects.cs: Add new regalloc test.
22318
22319         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22320
22321 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22322
22323         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22324         
22325         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22326         arguments.
22327
22328         * driver.c: Fix profiling after TLS changes.
22329         
22330         * driver.c (mono_main): Set mono_stats.enabled if needed.
22331
22332         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22333         CEE_BOX.
22334
22335 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22336
22337         * mini-x86.c: use a 1 op rather than a 2 op tls access
22338         instruction -> faster.
22339
22340 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22341
22342         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22343         x86 backend.
22344
22345 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22346
22347         * exceptions-sparc.c (throw_exception): fix typo
22348
22349 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22350
22351         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22352         set tree->dreg correctly with tls. Allow any
22353         register to be used.
22354
22355         * mini-x86.c (read_tls_offset_from_method): add new code
22356         generation pattern seen with GCC.
22357
22358
22359 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22360
22361         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22362         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22363         exceptions-sparc.c: fix some performance issues in exception
22364         handling and setting of the stack trace for exceptions that were
22365         already thrown.
22366
22367 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22368
22369         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22370         x86 backend.
22371         
22372         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22373         registers.
22374
22375 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22376
22377         This patch inlines tls access, when possible.
22378         
22379         * mini.h: new arch functions for TLS intrinsics.
22380         All platforms updated with a stub.
22381
22382         * mini.c: use the new intrinsics
22383
22384         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22385         arch specific intrinsic for tls variables
22386
22387 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22388
22389         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22390         under windows.
22391
22392 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22393
22394         * mini.c: thread local allocation
22395
22396 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22397
22398         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22399
22400         * Makefile.am: Link against the static version of libmonogc.
22401         
22402         * Makefile.am: Link the static versions of the convenience libraries
22403         into the mono executable.
22404
22405         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22406
22407 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22408
22409         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22410         on integer overflow.
22411
22412         * mini-amd64.c: Reorganize function call code.
22413
22414         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22415
22416 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22417
22418         * inssel-x86.brg: use xor eax,eax.
22419         
22420         * basic.cs: new tests
22421
22422 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22423
22424         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22425         in exception throwing code.
22426         
22427 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22428
22429         * inssel-x86.brg: use xor esi,esi.
22430
22431 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22432
22433         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22434         can trace methods compiled during mini_init () too.
22435
22436         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22437         CEE_CONV_U4.
22438
22439 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22440
22441         * Makefile.am: static link on x86 (r=zoltan)
22442
22443 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22444
22445         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22446         code since it causes some programs to fail.
22447
22448 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22449
22450         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22451
22452 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22453
22454         * mini.c: ovfops_op_map - add STACK_OBJ case for
22455         CONV_I 
22456         * basic.cs: add test_0_pin_string as test
22457         case for above.
22458
22459 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22460
22461         * Makefile.am: build C# if srcdir != builddir
22462
22463 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22464
22465         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22466         fall-through blocks.
22467
22468 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22469
22470         * driver.c: enable loop by default again and include abcrem in -O=all.
22471
22472 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22473
22474         * iltests.il: Add some localloc tests.
22475
22476         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22477
22478         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22479         Fixes #62574.
22480
22481         * inssel-amd64.brg: Add some optimizations.
22482
22483         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22484         for gcc-3.4.
22485
22486         * Makefile.am: Statically link mono against libmono on AMD64.
22487         
22488         * mini-amd64.c inssel-amd64.brg: Optimizations.
22489
22490 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22491
22492         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22493
22494         * tramp-amd64.c: Patch calling code in trampolines.
22495
22496 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22497
22498         * mini-amd64.c: pinvoke struct passing fixes.
22499
22500 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22501
22502         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22503         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22504
22505 2004-08-05  Duncan Mak  <duncan@ximian.com>
22506
22507         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22508         CEE_LDELEM_ANY.
22509
22510 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22511
22512         * mini-amd64.c (emit_move_return_value): Move return value for normal
22513         calls too.
22514
22515 2004-08-05  Martin Baulig  <martin@ximian.com>
22516
22517         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22518         `type->type'; just modify `type' itself when dealing with enums
22519         and generic instances.
22520         (check_call_signature): Make `simple_type' a `MonoType *'.
22521
22522 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22523
22524         * mini.c: Use OP_PADD to add offsets to addresses.
22525
22526         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22527
22528 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22529
22530         * mini-sparc.c (mono_arch_emit_epilog): fix check
22531         for folding last op into restore instruction
22532
22533 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22534
22535         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22536         helper methods using the code manager.
22537         
22538         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22539
22540         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22541
22542 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22543         
22544         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22545           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22546
22547         * mini-s390.c: fix tail processing
22548
22549 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22550
22551         * mini-ppc.c: mul.ovf.un exception name fix.
22552
22553 2004-08-03  Martin Baulig  <martin@ximian.com>
22554
22555         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22556         instances; before jumping to `handle_enum', also modify `ptype'.
22557
22558 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22559
22560         * cpu-sparc.md: fcall maximal length too small.
22561
22562 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22563
22564         * mini-amd64.c mini.h: Add initial support for passing/returning 
22565         structures to/from pinvoked methods.
22566
22567 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22568
22569         * mini-ppc.c: reg allocator fix.
22570
22571 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22572
22573         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22574
22575         * inssel.brg: Optimize memset on 64 bit machines.
22576
22577         * mini-amd64.c: Fix some vararg cases.
22578
22579 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22580
22581         * mini-s390.c: Corrected macro in emit_float_to_int
22582
22583         * s390-abi.cs: Tests to exercise the s390 ABI
22584
22585 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22586
22587         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22588         caller saved regs.
22589
22590         * basic.cs: Add a test for add.ovf.un.
22591
22592 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22593
22594         * mini-sparc.c: add case for OP_IDIV_UN
22595
22596 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22597
22598         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22599         
22600         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22601
22602 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22603
22604         * basic.cs: regression tests.
22605
22606         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22607         regressions.
22608
22609 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22610
22611         * basic.cs: Add a new test.
22612
22613         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22614         and AOT. Various fixes and optimizations.
22615
22616         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22617
22618 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22619
22620         * mini-ppc.c: make sure temp regs are not used for global reg
22621         allocation.
22622
22623 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22624
22625         * cpu-sparc.md: conv_i8 fix for 64bits
22626
22627         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22628
22629 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22630         
22631         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22632         add opcode for cmp BYTE PTR [eax], imm.
22633
22634         * inssel.brg: Make memcpy and memset takes bases.
22635
22636 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22637
22638         * *-amd64.*: More AMD64 work.
22639         
22640 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22641
22642         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22643         add a compare-not-equal opcode.
22644         
22645 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22646
22647         * mini.c: Use mono_init_from_assembly instead of mono_init.
22648         
22649 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22650
22651         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22652
22653         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22654
22655         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22656
22657         * inssel.brg: 64 bit fixes.
22658
22659         * mini.h (MonoCallInst): Add some AMD64 specific data.
22660
22661         * mini.h: Add some OP_P opcodes.
22662
22663 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22664
22665         * basic.cs: tests for 61797 and 61740
22666
22667 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22668
22669         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22670         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22671
22672 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22673
22674         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22675
22676         * *-amd64*.*: Ongoing AMD64 work.
22677
22678 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22679
22680         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22681
22682         * *-amd64*: Ongoing AMD64 work.
22683
22684         * mini-arch.h: Add AMD64 support.
22685
22686         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22687
22688         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22689
22690         * mini-ops.h: Add new opcodes.
22691
22692         * Makefile.am: Add AMD64 support.
22693
22694         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22695         rules into the inssel-long*.brg files.
22696
22697         * *-amd64.*: Add beginnings of AMD64 backend.
22698
22699 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22700
22701         * mini.c (print_dfn): commenting out the code that prints
22702         the cil. With -O=deadce, this makes -v -v crash.
22703         
22704         * cpu-pentium.md: make checkthis have a length of 2
22705
22706 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22707
22708         * mini-sparc.h: fix implementations of __builtin
22709         functions for Sun compiler for V9.
22710
22711 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22712
22713         * mini.c: use the new stelem.ref wrapper
22714         * exceptions.cs, arrays.cs: new stelem.ref tests
22715
22716 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22717
22718         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22719         new XSP should work with these changes).
22720
22721 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22722         
22723         * inssel-{long32,x86,}.brg: trivial optimizations.
22724         
22725 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22726
22727         * mini.c: load value when emitting box operation in
22728         constrained calls.
22729
22730 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22731
22732         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22733         is one byte shorter than cmp DWORD PTR [eax], 0.
22734
22735 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22736
22737         * inssel-ppc.brg: arguments on the stack are always
22738         relative to the stack pointer (spotted by Neale Ferguson).
22739
22740 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22741
22742         * exceptions-x86.c: delay appending the method name to the trace until
22743         after mono_jit_info_table_find is called, as this gets the real
22744         MonoMethod.
22745
22746 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22747
22748         * aot.c: register roots
22749
22750 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22751
22752         * aot.c : I could just use PLATFORM_WIN32 flag.
22753
22754 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22755
22756         * aot.c : Reverting the previous fix. This time it broke linux build.
22757
22758 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22759
22760         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22761
22762 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22763
22764         * mini.c (handle_stack_args): Remove some more debugging code.
22765         
22766         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22767
22768         * driver.c mini.h aot.c: Allow additional options to be specified with
22769         --aot and pass them to mono_compile_assembly.
22770
22771         * aot.c: Add experimental code to AOT compile all loaded assemblies
22772         on demand and save the code into a cache in the filesystem.
22773
22774         * aot.c: Add support for more wrapper methods.
22775         
22776         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22777         58863.
22778
22779         * cpu-*.md: Remove removed opcodes.
22780
22781         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22782         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22783         related icalls to marshal.c.
22784
22785 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22788
22789         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22790
22791         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22792
22793 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22794         * liveness.c: If liveness is recomputated we need to reset the information
22795         for each variable. This way, if the liveness range has been narrowed
22796         by optimizations that happened after the last computation, we can return
22797         a smaller range.
22798         
22799         For example, if you have
22800         
22801         {
22802                 int i = 0;
22803                 
22804                 // Tons of code that does not affect i
22805                 
22806                 i = foo ();
22807                 ...
22808         }
22809         
22810         i = 0 is dead code and will be removed by SSA. However, when
22811         linear scan gets to the code, i will still appear to be live
22812         throughout the entire block. This prevents good register allocation.
22813
22814 2004-07-06  Martin Baulig  <martin@ximian.com>
22815
22816         * debug-mini.c (mono_debug_init_method): Allow
22817         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22818         (mono_debug_add_icall_wrapper): New method.
22819
22820         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22821
22822 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22823
22824         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22825         optimization.
22826
22827 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22828
22829         * aot.c (mono_aot_load_method): Fix loading of debug info.
22830
22831 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22832
22833         * aot.c: Add logging support.
22834
22835 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22836
22837         * mini.h: Add prototype for mono_print_method_from_ip.
22838
22839         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22840
22841         * inssel.brg: 64 bit fixes.
22842
22843         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22844         inssel-long32.brg.
22845
22846         * Makefile.am: Add SPARC64 support.
22847
22848 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22849
22850         * aot.c: Fix alignment problems on 32 bit platforms.
22851
22852 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22853
22854         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22855         SPARC64.
22856
22857         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22858         problems.
22859
22860         * mini.h: Bump AOT file version. Some 64 bit fixes.
22861
22862 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22863
22864         * inssel-sparc.brg: Add new rule to avoid register moves.
22865
22866         * inssel.brg: Add ldind_to_load_membase helper function.
22867
22868 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22869
22870         * mini.c: OffsetToStringData intrinsic.
22871         
22872 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22873
22874         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22875
22876         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22877         regression tests.
22878
22879         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22880 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22881
22882         * mini.c: reinstated mono_compile_get_interface_var()
22883         on x86, too, since the change breaks the Gtk# build there as well.
22884
22885 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22886
22887         * driver.c: remove loop from the default optimizations: it seems to
22888         interact badly with some of the other options (see bug #60613).
22889
22890 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22891
22892         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22893         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22894
22895 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22896
22897         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22898         vararg-using methods.
22899
22900 2004-06-21  Martin Baulig  <martin@ximian.com>
22901
22902         * mini/mini-exceptions.c
22903         (mono_handle_exception): Added `gpointer original_ip' argument.
22904         After calling mono_unhandled_exception(), call
22905         mono_debugger_unhandled_exception() and if that returns true,
22906         restore the context and return.
22907
22908 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22909
22910         * mini-ppc.c: prefer the use of relative branches so
22911         they won't need to be patched in aot code (patch from Patrick Beard).
22912
22913 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22914
22915         * aot.c: patch from Patrick Beard to make the output assembly
22916         more correct for the MacOSX assembler. Small tweak to
22917         generate sane images on Linux/PPC, too.
22918
22919 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22920
22921         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22922         case until bug #59509 is fixed (shows up in #60332).
22923
22924 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22925
22926         * mini.c: make sure the needed wrappers are compiled, too, with
22927         precomp.
22928
22929 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22930
22931         * driver.c: remove NPTL reference in --version output.
22932
22933 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22934
22935         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22936         generate valid assembly for the Mach-O assembler.
22937
22938 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22939
22940         * driver.c: don't include abcrem in the all optimization specifier
22941         since it slows down jit compilation too much for now.
22942
22943 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22944
22945         * mini.c: use BIGMUL only if both operands have the same signage.
22946         * iltests.il: Test for bug 60056. (errors related to signage in
22947         BIGMUL).
22948
22949         r=lupus.
22950
22951 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22952
22953         * mini.c, aot.c: memory leak fixes.
22954
22955 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22956
22957         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22958
22959 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22960
22961         * Makefile.am: remove the -static hack completely, it links in
22962         statically glib as well.
22963
22964 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22965
22966         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22967         * exceptions.cs: make it compile with new mcs/csc.
22968
22969 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22970         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22971         and added relevant test case.
22972
22973 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22974
22975         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22976         regressions in gtk-sharp.
22977
22978 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22979
22980         * exceptions.cs: New regression tests.
22981
22982         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22983
22984 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22985
22986         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22987
22988 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22989
22990         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22991
22992         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22993
22994 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22995
22996         * mini.c (mono_jit_runtime_invoke): Init class in this
22997         method instead of trusting mono_jit_compile_method to
22998         do the work (because wrappers can be in object class)
22999
23000 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23001
23002         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23003
23004         * basic-long.cs: New regression test.
23005
23006 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23007
23008         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23009         and div/rem checks.
23010
23011 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23012
23013         * Makefile.am: fix miguel's change to build mono statically against
23014         libmono (track build dependencies).
23015
23016 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23017
23018         * cfold.c: Some glib versions do not have G_MININT32.
23019
23020 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23021
23022         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23023         with precision of tan, atan, sin and cos, and implemented related
23024         regressions tests (fixes bug 54467, but one new problem appeared and
23025         is not fixed yet).
23026
23027 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23028
23029         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23030
23031         * exceptions.cs: Add test for constant folding && division by zero.
23032
23033         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23034         since driver.c is in libmono too, so the optimization was useless.
23035
23036         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23037         variable to driver.c so the compiler can emit more efficient code to
23038         access them.
23039
23040 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23041
23042         * Makefile.am: don't distribute generated inssel.[ch] files.
23043
23044 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23045
23046         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23047         into the default appdomain. Fixes #58707.
23048
23049         * jit-icalls.c: Remove the broken approximation for truncl, doing
23050         no conversion is better.
23051
23052         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23053         Fixes #58863.
23054
23055 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23056
23057         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23058         of the mcrxr instruction which is not available on some processors
23059         even if it's documented to be. Implement add and sub overflow correctly
23060         (still not complete for long unsigned). Speed up icalls a bit.
23061
23062 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23063
23064         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23065         we run .cctor in the current domain instead of target_domain.
23066         
23067         Fixes bug #58558, .cctor not being called in -O=shared.
23068
23069 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23070
23071         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23072
23073 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23074
23075         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23076         which can be done with an imm8, do it that way.
23077         (mono_arch_output_basic_block): ditto for a jmp
23078         (mono_arch_emit_prolog): Computate maximum offset of a label.
23079
23080 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23081
23082         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23083         now tries to allocate prefered physical reg's for virtual
23084         regs. This reduces the number of emited spills/loads with
23085         20-30% on our core assemblies.
23086
23087 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23088
23089         * jit-icalls.c: truncl() is not needed and trunc() is
23090         the correct thing to do anyway (bug #58287).
23091
23092 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23093
23094         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23095         if available.
23096
23097 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23098
23099         * driver.c: enable loop optimizations by default.
23100
23101 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23102
23103         * mini-x86.c: fix calc of max loop size when aligning loops start.
23104
23105 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23106
23107         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23108         the stack.
23109
23110 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23111
23112         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23113         should set carry.
23114
23115         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23116
23117         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23118         
23119         * mini.c (inline_method): Allways inline some wrappers even if the cost
23120         is too large. Fixes #58785.
23121
23122         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23123         
23124 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23125
23126         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23127         (crichton@gimp.org). Beginning of support for sparc/linux.
23128
23129         * mini-sparc.c: Optimize retrieval of LMF address.
23130
23131 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23132
23133         * exceptions-ppc.c:  handle alloca in methods with clauses.
23134
23135 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23136
23137         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23138
23139 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23140
23141         * mini.c: Delegate most of the abort signal work to 
23142           mono_thread_request_interruption, which also handles Stop and Suspend
23143           states.
23144
23145 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23146
23147         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23148         supports the save/restore lmf opcodes.
23149
23150 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23151
23152         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23153         by gcc-3.4 as well.
23154
23155         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23156
23157 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23158
23159         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23160         methods which contain array accesses.
23161
23162         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23163         boundaries. Fixes #58537.
23164
23165         * iltests.il: Add regression test for #58537.
23166
23167 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23168
23169         * mini-x86.c (mono_arch_local_regalloc): Last part of
23170         fix for bug #58633 (releasing register to early).
23171
23172 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23173
23174         * basic-long.cs: Add new regression test.
23175
23176 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23177
23178         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23179         register too early on the chain.
23180
23181 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23182
23183         * mini.c (create_helper_signature): Use a helper function to reduce
23184         the code which needs to be written. Also set the calling convention of
23185         icalls on windows. Fixes #57840.
23186
23187 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23188
23189         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23190         exceptions-ppc.c: added helper function to get the instruction address
23191         from a signal handler context.
23192
23193 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23194
23195         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23196         from gonzalo.
23197
23198 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23199
23200         * helpers.c: Add new env variable to pass args to objdump.
23201         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23202
23203 2004-05-17  Radek Doulik  <rodo@ximian.com>
23204
23205         * Makefile.am (common_sources): added abcremoval.h so it get
23206         disted and daily mono packages on go-mono.com will build again
23207
23208 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23209
23210         * abcremoval.c: Fixed coding style, added copyright header.
23211
23212         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23213
23214         * mini.h: Added prototype for abc removal main function.
23215
23216         * build_relations_propagation_table.pl: Added copyright header.
23217
23218 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23219
23220         * basic-long.cs: reg test for complex ceq_long bug.
23221
23222 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23223
23224         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23225         reg in long and clob case (bug #58343). Fixed/added comments.
23226
23227 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23228
23229         * mini.c (mono_jit_runtime_invoke): Follow new convention
23230         of calling the invoke method with an function pointer.
23231
23232 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23233
23234         * ChangeLog: Fix author of memory leak patch.
23235
23236 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23237
23238         * Makefile.am: fix make dist as well...
23239
23240
23241 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23242
23243         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23244         on archs where pointers are 4 bytes long.
23245
23246         * Makefile.am: Added abcremoval.c source file.
23247
23248         * abcremoval.c: Added abcremoval.c.
23249
23250         * abcremoval.h: Added abcremoval.h.
23251
23252         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23253
23254         * inssel.brg: Enabled bounds check removal.
23255
23256         * mini.c: Added support for abcrem optimization.
23257
23258         * mini.h: Added abcrem optimization label.
23259
23260         * driver.c: Added support for abcrem optimization.
23261
23262         * propagated_relations_table.def: Added propagated_relations_table.def.
23263
23264 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23265
23266         * mini.c, cfold.c: fix style.
23267
23268 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23269
23270         * mini.c: handle issue with the low-level implementation of
23271         some long opcodes (bug #54209).
23272
23273 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23274
23275         * basic.cs: test for my new cmov stuff.
23276
23277 2004-05-13      Patrik Torstensson
23278
23279         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23280         opt and added peephole documentation.
23281
23282 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23283
23284         * tramp-ppc.c: rewrote the generic trampoline code.
23285
23286 2004-05-11      Patrik Torstensson
23287
23288         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23289
23290 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23291
23292         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23293
23294         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23295         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23296
23297         * mini.c: Add new icalls for AsAny marshalling.
23298
23299 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23300
23301         * tramp-ppc.c, mini-ppc.c: more cleanups.
23302
23303 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23304
23305         * mini.c: no warnings.
23306
23307 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23308
23309         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23310
23311 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23312
23313         * mini.c: In the thread abort signal handler, if the thread is in the
23314         process of being stoped, don't throw the Abort exception, just stop the
23315         thread.
23316
23317 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23318
23319         * tramp-ppc.c: removed old code.
23320
23321 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23322
23323         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23324         do some simple speed optimizations on ppc.
23325
23326 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23327
23328         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23329         and large offsets in load/store.
23330
23331 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23332
23333         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23334         it causes regressions.
23335
23336 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23337
23338         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23339         support.
23340
23341 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23342
23343         * jit-icalls.c: remove warnings.
23344         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23345         speedups for unsafe code.
23346
23347 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23348
23349         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23350
23351 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23352
23353         * basic-calls.cs: Add new regression test.
23354
23355         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23356         more portable.
23357
23358         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23359
23360         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23361         is no longer used.
23362
23363 2004-05-06      Patrik Torstensson
23364
23365         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23366         long reg allocation in any reg (not only eax:edx) and implemented 
23367         long shl/shr ops in asm instead of helpers.
23368
23369 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23370
23371         * mini-sparc.h: Fix warnings.
23372
23373         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23374         stack.
23375
23376         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23377         separate statement for clarity.
23378
23379         * mini-sparc.c: Update status.
23380
23381 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23382
23383         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23384         here.
23385
23386 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23387
23388         * inssel-ppc.brg: another small pre-release workaround:
23389         we don't do overflow detection for long_sub_un.
23390
23391 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23392
23393         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23394         (also works around a weird ppc bug: 57957).
23395
23396 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23397
23398         * tramp-ppc.c: trampoline fixes.
23399
23400 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23401
23402         * mini-ppc.c: fixed typos.
23403
23404 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23405
23406         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23407         at the top of the stack. Fixed typos. Use a frame registers
23408         for all the methods with exception clauses.
23409
23410 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23411
23412         * exceptions-ppc.c: restore fp registers.
23413
23414 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23415
23416         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23417         order from the stack top (moved the stack room to save the
23418         return value for trace after the param area). Fixed corruption
23419         in restoring registers on unwind.
23420
23421 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23422
23423         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23424
23425 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23426
23427         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23428         and prolog/epilog for methods that use it. Allow
23429         enough param area room for varargs methods. Fix miguel's
23430         breakage in exception handling.
23431
23432 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23433
23434         * Makefile.am: run genmdesc only on current arch.
23435
23436 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23437
23438         * exceptions-x86.c:
23439         * mini-x86.h: fix the build on windows.
23440
23441 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23442
23443         * 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.
23444
23445         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23446
23447         * mini-exceptions.c: New file.
23448         
23449         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23450         Move some parts of the x86 exception handling code to an 
23451         arch-independent file so it can be shared with other ports.
23452
23453 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23454
23455         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23456
23457 2004-04-26  David Waite  <mass@akuma.org>
23458
23459         * driver.c: remove comma from end of enumeration declaration
23460
23461 2004-04-26  Jackson Harper  <jackson@ximian.com>
23462
23463         * driver.c: parse config file before loading first assembly. This
23464         allows the user gac to be enabled/disabled. 
23465         
23466 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23467
23468         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23469         simpler mechanism: we do not care what is encoded initially
23470         (branch absolute or relative), we care about the code and its
23471         target.  I kept the old code for reference for now.
23472
23473         The new code tries first to determine if the jump is anywhere in
23474         the -/+32 absolute meg range, if it succeeds, it encodes using the
23475         absolute branch;  If not, it tried to find something in the
23476         relative range, if not, it uses the handle_thunk code. 
23477
23478 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23479
23480         * exceptions-ppc.c: use the correct ip register on macosx.
23481
23482 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23483
23484         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23485
23486 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23487
23488         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23489         Raise exception on integer divide by zero by hand since the hw
23490         doesn't support it. Handle NaNs in FP compares.
23491
23492 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23493
23494         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23495         code reducing duplication between the platforms and enabled
23496         signal exception handling (on linux for now).
23497
23498 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23499
23500         * exceptions-ppc.c: more macosx support.
23501
23502 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23503
23504         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23505
23506 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23507
23508         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23509
23510 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23511
23512         * iltests.il: more tests.
23513
23514 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23515
23516         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23517         vars as well.
23518
23519 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23520
23521         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23522
23523 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23524
23525         * liveness.c: Mark variables as volatile in all basic blocks reachable
23526         from exception clauses.
23527
23528 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23529
23530         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23531         inlining.
23532
23533 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23534
23535         * iltests.il, basic.cs: more tests for regalloc.
23536
23537 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23538
23539         * iltests.il: Some tests for register allocation modifications
23540         I have locally.
23541
23542 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23543
23544         * exceptions.cs: Add regression test for bug #56782.
23545
23546         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23547         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23548         the beauty of fixing the same thing in 5 different files...
23549
23550 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23551
23552         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23553         methods.
23554
23555 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23556
23557         * mini.c: Add support for STRWLPARRAY marshalling convention.
23558
23559 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23560
23561         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23562         to init the context to setup the regs pointer).
23563
23564 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23565
23566         * exceptions-ppc.c: more exceptions work.
23567
23568 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23569
23570         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23571         not allowed.
23572
23573 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23574
23575         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23576         can use the memory directly.
23577
23578         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23579
23580         add x86_add_membase, x86_sub_membase, x86_mul_membase
23581
23582 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23583
23584         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23585         GENERAL_REGS they were also hardcoded for all PPC ports.
23586
23587         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23588
23589         Remove hard-coded limit for floating point registers, use
23590         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23591
23592         Notice that in MacOS X calling conventions you can fit a lot more
23593         floating point values in registers, so I should update the PInvoke
23594         test to excercise the passing of floating point values on the
23595         stack (currently broken).
23596         
23597 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23598
23599         * tramp-ppc.c (create_trampoline_code): Added
23600         JUMP_TRAMPOLINE_SIZE. 
23601         (ppc_magic_trampoline): Follow the pattern from
23602         x86_magic_trampoline: if code is set to zero, return. 
23603         (create_trampoline_code): Always pass MonoMethod to the jump
23604         trampoline, before it was passing a null.
23605         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23606         share the code with mono_arch_create_jit_trampoline. 
23607
23608         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23609         implemented.
23610         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23611         implemented.  
23612
23613         * cpu-g4.md: Added length for jmp instruction, the worst case
23614         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23615         for save_lmf).
23616
23617 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23618
23619         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23620
23621 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23622
23623         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23624         before each IL instruction.
23625
23626         * mini.c (CEE_BOX): Fix warnings.
23627
23628 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23629
23630         * mini.c: removed a few unused vars and extra whitespace.
23631
23632 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23633
23634         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23635         checks.
23636         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23637         index.
23638         (OP_GETCHR): use the above
23639         (CEE_LDELEMA): use the above.
23640
23641         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23642         version of the generic impl.
23643         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23644         (CEE_LDELEMA): use the above.
23645
23646 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23647
23648         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23649         Fixes #56317.
23650
23651         * iltests.il: Added new regression test for #56317.
23652
23653 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23654
23655         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23656         under NetBSD. Fixes #56450.
23657
23658         * liveness.c (update_gen_kill_set): Fix previous patch.
23659
23660 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23661
23662         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23663
23664 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23665
23666         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23667         ldsfld and ldsflda.
23668
23669         * inssel-sparc.brg: Add more optimizations.
23670
23671         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23672
23673 2004-04-01  Martin Baulig  <martin@ximian.com>
23674
23675         * mini.c (handle_box): New static function; moved the
23676         implementation of CEE_BOX here.
23677         (mono_method_to_ir): Added `constrained_call' variable.
23678         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23679         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23680         mono_method_get_constrained() to get the method.
23681
23682 2004-04-01  Martin Baulig  <martin@ximian.com>
23683
23684         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23685         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23686         (mono_method_to_ir): We don't need these macros anymore since
23687         mono_class_get_full() already takes care of it. 
23688
23689 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23690
23691         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23692         use @function (as doesn't accept #function here) and check the return
23693         value of system and stop if fails.
23694
23695 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23696
23697         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23698
23699 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23700
23701         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23702
23703         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23704
23705         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23706         #56223.
23707
23708         * basic-long.cs: Add test for negation of Int64.MinValue.
23709
23710 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23711
23712         * mini-sparc.c: Update status.
23713
23714         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23715
23716         * exceptions-sparc.c: Fix return value in filters.
23717
23718         * inssel-sparc.brg: Fix register allocation in some rules.
23719
23720 2004-03-28  Martin Baulig  <martin@ximian.com>
23721
23722         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23723         if neccessary.  
23724
23725 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23726
23727         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23728         
23729         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23730         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23731         remove unused conv_u4 opcode.
23732
23733         * mini-x86.c: Remove valgrind workaround since it slows down things
23734         even when mono is not run under valgrind.
23735
23736 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23737
23738         * mini-sparc.c: Update status.
23739
23740         * inssel-sparc.brg: Add some optimizations.
23741
23742         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23743         future delay slot filling. Add support for varargs, tail calls and JMP.
23744
23745         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23746         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23747
23748         * inssel.brg: Fix register allocation in OP_ARGLIST.
23749
23750         * inssel.brg: Fix warnings.
23751
23752 2004-03-25  Martin Baulig  <martin@ximian.com>
23753
23754         * mini.c (inflate_generic_field): Removed.
23755         (mini_get_method): Removed, use mono_get_method_full(),
23756         (mini_get_class): Removed, use mono_class_get_full().
23757         (mono_method_to_ir): Pass our generic context to
23758         mono_field_from_token().        
23759
23760 2004-03-25  Martin Baulig  <martin@ximian.com>
23761
23762         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23763         of a `MonoMethod *'.
23764         (mini_get_method): Take a `MonoGenericContext *' instead
23765         of a `MonoMethod *'.
23766         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23767         a new local variable called `generic_context' which holds the
23768         current `MonoGenericContext *'; use it to lookup things.
23769
23770 2004-03-24  Martin Baulig  <martin@ximian.com>
23771
23772         * mini.c (mini_get_class): New static method; if we're inside a
23773         generic instance, inflate the class if neccessary.
23774         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23775
23776 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23777
23778         * iltests.il: New regression test for #55976.
23779
23780         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23781         #55976.
23782
23783 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23784
23785         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23786         output.
23787
23788 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23789
23790         * liveness.c: Consider SSA stores as well as loads when making vars
23791         volatile.
23792
23793         * exceptions.cs: New regression tests for register allocation.
23794         
23795 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23796
23797         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23798         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23799           domain lock only to protect puntual access to data structures.
23800           Added access lock for sighash, jit_icall_hash_name, 
23801           jit_icall_hash_addr and domain->code_mp.
23802
23803 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23804
23805         * driver.c: Print SIGSEGV handling method.
23806
23807         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23808
23809         * mini.c (setup_jit_tls_data): Handle case when this is called
23810         multiple times for a thread.
23811
23812         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23813         is different from fbxx_un. Fixes #54303. Also use constants instead of
23814         magic numbers in a lot of places.
23815
23816 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23817
23818         * exceptions.cs: Fix cctor test when --regression is used.
23819
23820 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23821
23822         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23823         for Linux/ppc.
23824
23825 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23826
23827         * inssel-ppc.brg: fixed register assignments for some rules.
23828
23829 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23830
23831         * exceptions.cs: Add test for exceptions in static constructors.
23832
23833         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23834         static constructors outside the domain lock. Fixes #55720.
23835
23836 2004-03-17  Martin Baulig  <martin@ximian.com>
23837
23838         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23839         (inflate_generic_field): Take the `MonoMethod *' instead of the
23840         `MonoClass *' and added support for generic method.
23841         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23842         have a `field->parent->gen_params', only inflate the field if it's
23843         an open constructed type.
23844
23845 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23846
23847         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23848         exception object instead of the preconstructed ones.
23849
23850 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23851
23852         * mini.c: reverted changed to sigsegv_signal_handler commited
23853         accidentally in the previous patch.
23854
23855 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23856
23857         * mini.c:
23858         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23859         running --aot with an old assembly.
23860
23861 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23862
23863         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23864         point values.
23865
23866         * mini-sparc.c: Add support for v9 branches with prediction.
23867
23868 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23869
23870         * mini.c (mini_init): #warning is GNUC only
23871
23872         * mini-sparc.h: implement __builtin_frame_address
23873         and __builtin_return_address for Sun C compiler
23874
23875 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23876
23877         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23878
23879 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23880
23881         * basic-calls.cs: Add test for unaligned byref long argument passing.
23882
23883         * mini-ops.h: Add sparcv9 compare and branch instructions.
23884
23885         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23886         v9 instructions if we have a v9 cpu.
23887
23888         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23889         registers for global allocation.
23890
23891         * exceptions-sparc.c: Fixes.
23892         
23893 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23894
23895         * liveness.c (mono_analyze_liveness): Optimized version.
23896
23897         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23898
23899         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23900         sparc work.
23901
23902         * basic-float.cs basic-calls.cs: New regression tests.
23903
23904 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23905
23906         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23907         sigaltstack implementation.
23908
23909         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23910         
23911         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23912         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23913
23914 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23915
23916         * mini.c: Fix warnings.
23917         
23918         * mini.c (mono_resolve_patch_target): New function which contains the
23919         arch independent part of the patching process.
23920
23921         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23922         patching code to a separate function.
23923
23924 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23925
23926         * mini.c (add_signal_handler): ifdef out on Windows
23927
23928 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23929
23930         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23931         cpu-sparc.md: Add exception handling support + other fixes.
23932
23933         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23934         typed GC detection in --version.
23935
23936         * basic.cs exceptions.cs: New regression tests.
23937
23938         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23939         the arch specific code can store data during a compilation.
23940
23941         * mini-ops.h: Add OP_SETFRET.
23942
23943         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23944         function, register a separate icall for each arity, so the icalls can
23945         get a wrapper.
23946         
23947         * mini.c (mono_print_tree): Print negative offsets in a more readable
23948         form.
23949         
23950         * mini.c: Make signal handling work on sparc.
23951         
23952         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23953
23954         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23955
23956         * jit-icalls.c: Emulate truncl by aintl on solaris.
23957
23958         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23959
23960 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23961
23962         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23963
23964 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23965
23966         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23967         a MarshalByRef type, inline a method that performs the check, taking into
23968         account that the object can be a proxy. Also implemented tow new opcodes:
23969         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23970         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23971         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23972
23973 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23974
23975         * mini-ppc.c: if a relative branch displacement is too big
23976         but it points to and area reachable with an absolute branch, 
23977         avoid the thunks.
23978
23979 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23980
23981         * mini.c: optimize small copies in cpblk.
23982
23983 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23984
23985         * basic-calls.cs basic-float.cs: New regression tests.
23986
23987         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23988         negative offsets from %fp. Implement localloc. Fix local register 
23989         allocation. Fix the case when the this argument needs to be saved to
23990         the stack. Implement some missing opcodes.
23991
23992 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23993
23994         * mini.c (mini_method_compile): Reenable global regalloc in methods
23995         with exception handlers.
23996
23997         * linear-scan.c (mono_varlist_sort): Fix warning.
23998
23999         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24000
24001         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24002         regalloc costs.
24003
24004         * liveness.c: Make all variables uses in exception clauses volatile, to
24005         prevent them from being allocated to registers. Fixes #42136.
24006
24007 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24008
24009         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24010         causes regressions.
24011
24012         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24013         argument to mono_arch_regalloc_cost.
24014
24015         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24016         precisely.
24017
24018 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24019
24020         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24021         Make the cost of allocating a variable to a register arch dependent.
24022
24023         * basic-calls.cs: Fix compilation of tests.
24024         
24025         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24026         helper function to cut back on the number of #ifdefs needed.
24027
24028         * mini-ppc.c: Fix compilation.
24029
24030         * basic-calls.cs: New regression tests.
24031
24032         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24033
24034         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24035         of l0 since that is callee saved.
24036
24037         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24038         to virtual calls.
24039
24040         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24041         of delay instruction.
24042
24043         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24044
24045         * mini.h (MonoCallInst): Add 'virtual' flag.
24046
24047         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24048
24049 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24050
24051         * *.cs: New regression tests.
24052
24053         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24054         work.
24055
24056         * mini.c (mono_runtime_install_handlers): Fix build.
24057
24058         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24059         'signal_stack_size' members.
24060
24061         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24062         alternate signal stack.
24063
24064         * exceptions-x86.c: Add stack overflow handling.
24065
24066         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24067         functions to arch independent code.
24068
24069         * mini.c (mono_print_tree): Print more detailed info for load_membase
24070         opcodes.
24071         
24072 2004-02-23  Martin Baulig  <martin@ximian.com>
24073
24074         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24075
24076 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24077
24078         * mini-x86.c: fixed reg allocation for div/rem.
24079
24080 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24081
24082         * driver.c (mono_main): Report some configuratio options on --version.
24083
24084 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24085
24086         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24087         low in the address space. Correctly flush memory in thunks where we
24088         output native code.
24089
24090 2004-02-20  Martin Baulig  <martin@ximian.com>
24091
24092         * mini.c (mini_get_method): New static method; inflate all generic
24093         methods and methods in open generic instances.
24094         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24095         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24096
24097 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24098
24099         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24100
24101         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24102
24103 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24104
24105         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24106
24107         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24108         it compile using Sun's compiler.
24109
24110 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24111
24112         * 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.
24113
24114         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24115
24116 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24117
24118         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24119         code.
24120         * mini-ppc.c: handle calls outside of the allowed range with thunks
24121         allocated using the code manager.
24122         * tramp-ppc.c: use the code manager to hold generated native code.
24123         Fixed the magic trampoline to just patch vtable entries.
24124
24125 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24126
24127         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24128         independent file.
24129
24130 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24133         PPC.
24134
24135         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24136         if we have a working __thread implementation.
24137
24138         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24139         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24140
24141 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24142
24143         * mini-x86.c: Fix compilation under gcc 2.
24144         
24145 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24146
24147         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24148         contains a call to the wrapped function.
24149
24150         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24151         OP_<CALL>_IMM opcodes, and use them under X86.
24152         
24153         * mini.c (mono_jit_find_compiled_method): Fix warning.
24154
24155         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24156
24157         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24158
24159         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24160         functionality to mini.c.
24161
24162         * mini.c (mono_create_jump_trampoline): New function to create a jump
24163         trampoline. Return a compiled method instead of a trampoline if it
24164         exists. Add a cache for jump trampolines.
24165
24166         * mini.c (mono_jit_find_compiled_method): New function to return a
24167         compiled method if it exists.
24168
24169         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24170         mono_arch_create_jit_trampoline.
24171
24172         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24173         a jump trampoline. Fixes #52092.
24174         
24175 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24176
24177         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24178         which is not up-to-date. Add check_corlib_version () instead.
24179
24180         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24181         have to call it.
24182         
24183         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24184         since newer valgrind versions do not need it.
24185
24186         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24187         compile a method with a given set of optimizations.
24188
24189         * mini.c: Compile icall wrappers on-demand instead of at startup.
24190
24191         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24192         wrapper for an icall.
24193
24194 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24195
24196         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24197         #54063.
24198
24199         * iltests.il: Add test for non-empty stack before switch instruction.
24200
24201 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24202
24203         * mini.c: Add support for new stringbuilder marshalling conventions.
24204
24205         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24206
24207 2004-02-01  Martin Baulig  <martin@ximian.com>
24208
24209         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24210         in `ginst->mtype_argv'.
24211
24212 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24213
24214         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24215         facilitate grepping.
24216
24217 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24218
24219         * mini.c: fixed buglet in initobj generic implementation for references.
24220
24221 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24222
24223         * Makefile.am: make the version script conditional.
24224         * jit-icalls.c: handle missing truncl().
24225
24226 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24227
24228         * exceptions.cs: Add more tests for double->int conversion.
24229
24230         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24231         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24232
24233 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24234
24235         * driver.c: make --verbose --version emit an error
24236         if the loaded corlib doesn't match the runtime version.
24237
24238 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24239
24240         * mini-ppc.h: export ppc_patch().
24241         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24242         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24243         on par or better than on MacOSX.
24244
24245 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24246
24247         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24248         mono_lookup_pinvoke_call.
24249
24250         * mini-x86.c: Under windows, the default pinvoke calling convention is
24251         stdcall. Fixes #52834.
24252
24253         * mini.c (optimize_branches): Add an upper bound to the number of
24254         iterations to prevent infinite loops on strange loops. Fixes #53003.
24255
24256 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24257
24258         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24259         and ISINST. Fixes #52093.
24260
24261         * objects.cs (test_0_vector_array_cast): New tests.
24262         
24263 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24264
24265         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24266         checking in Array.Set ().
24267
24268         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24269         #52590.
24270
24271         * object.cs (test_0_multi_array_cast): New regression test.
24272
24273 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24274
24275         * exceptions-ppc.c: fix build on Linux/PPC.
24276
24277 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24278
24279         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24280         running under valgrind.
24281         (x86_magic_trampoline): Fix build bustage.
24282
24283         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24284         negative values as well. This is needed for the encoding of the line number
24285         info, since sometimes the line numbers are not in increasing order.
24286
24287 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24288
24289         * cpu-pentium.md (localloc): Increase the size of the localloc 
24290         instruction since it is a loop under Win32.
24291
24292         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24293         allocation.
24294
24295 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24296
24297         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24298         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24299         Max Horn (max@quendi.de). Fix file names in comments.
24300
24301 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24302
24303         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24304         avoid stack overflow.
24305         (replace_usage): Avoid uninitialized variable warnings.
24306
24307         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24308         and taking the address of valuetype variables.
24309
24310 2004-01-03  Patrik Torstensson
24311
24312         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24313         for other purposes than FP later on.
24314
24315 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24316
24317         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24318         of tail calls.
24319
24320 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24321
24322         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24323
24324 2003-12-30  Patrik Torstensson <p@rxc.se>
24325
24326         * mini-x86.h: Decreased number of availiable fp regs.
24327         Solves corner cases with FP spilling.
24328
24329 2003-12-23  Patrik Torstensson <p@rxc.se>
24330
24331         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24332         for floating point stack tracking / spilling on x86. 
24333         Fixes bug #49012.
24334         
24335         * basic-float.cs: added float mul overflow test.
24336
24337 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24338
24339         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24340
24341 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24342
24343         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24344         supports for cond branches that overflow the immediate
24345         overflow offset. mcs can compile simple programs.
24346
24347 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24348
24349         * exceptions-ppc.c: exception handling support wip:
24350         finally handlers get run on exception.
24351
24352 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24353
24354         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24355         profiling.
24356
24357 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24358
24359         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24360         initial support for stack walking and unwinding.
24361
24362 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24363
24364         * driver.c (mono_main): Make corlib-out-of-sync message more 
24365         descriptive. Also remove verify_corlib call.
24366
24367 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24368
24369         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24370         not overlap with other call's arguments, too.
24371
24372 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24373
24374         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24375         move to arch-specific code the choice of arch-specific
24376         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24377         * mini.c: ensure emulation calls will not interleave
24378         with other calls.
24379
24380 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24381
24382         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24383         the magic trampoline stack frame is dropped before executing
24384         the new method.
24385
24386 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24387
24388         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24389         and integer to fp conversions. Added support for overflowing
24390         arguments on the stack. Reserve a couple more registers as temps.
24391         Added support for aot compilation (as output still needs to be
24392         tweaked, though).
24393
24394 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24395
24396         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24397         Don't overwrite return register in some corner cases.
24398
24399 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24400
24401         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24402         static constructors when AOT compiling.
24403
24404         * driver.c (mono_main): Call mono_check_corlib_version.
24405
24406 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24407
24408         * cpu-g4.md, basic.cs: fixed div target register.
24409
24410 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24411
24412         * mini-ppc.c, basic.cs: shl_imm fix with test.
24413
24414 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24415
24416         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24417         structures by value. Misc fixes.
24418         * objects.cs: more tests.
24419
24420 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24421
24422         * mini-ppc.c: lconv.ovf.i implemented.
24423
24424 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24425
24426         * mini.c:
24427         (mini_init): don't error out if someone already called g_thread_init.
24428
24429 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24430
24431         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24432         to be any type per the spec. Fix abnormal memory usage when
24433         the same object is repeatedly thrown.
24434
24435 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24436
24437         * mini.c: check for overruns in IL code.
24438
24439 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24440
24441         * TODO: Add/remove some todo entries.
24442
24443 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24444
24445         * driver.c (mono_main): Call mono_verify_corlib.
24446
24447 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24448
24449         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24450         This has been moved to mini.c
24451         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24452         type being casted is marshalbyref it could be a proxy, so instead of
24453         emitting the type check code, emit a call to a runtime method that will
24454         perform the check by calling CanCastTo if needed.
24455
24456 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24457
24458         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24459         methods with large stack frames under Win32.
24460
24461 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24462
24463         * Makefile.am: Distribute regression tests.
24464
24465         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24466         at the end instead of inserting each variable into the sorted list.
24467
24468         * linear-scan.c (mono_varlist_sort): New helper function.
24469         
24470 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24471
24472         * mini.c: ensure arguments and locals are within bounds.
24473
24474 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24475
24476         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24477         related fixes.
24478
24479 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24480
24481         * mini.c (mono_cprop_copy_values): Fix crash.
24482
24483         * aot.c: Set verbosity back to 0.
24484         
24485 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24486
24487         * regalloc.c: complete memory leak fix by Laurent Morichetti
24488         (l_m@pacbell.net).
24489
24490 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24491
24492         * driver.c (main_thread_handler): Revert the previous patch.
24493
24494         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24495         under valgrind.
24496
24497         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24498         memory from the memory pool.
24499
24500         * driver.c (main_thread_handler): Turn on all optimizations when
24501         --aot is used.
24502
24503         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24504         an array for better performance.
24505
24506         * regalloc.c (mono_regstate_assign): Fix memory leak.
24507
24508         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24509         serialize the debug info.
24510
24511         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24512         debug info from the serialized representation.
24513
24514         * aot.c: Save debug info into the generated file and load it when 
24515         loading a method.
24516
24517         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24518
24519 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24520
24521         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24522         More FP-related fixes.
24523
24524 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24525
24526         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24527         and register allocation buglet. Hello world now runs.
24528
24529 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24530
24531         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24532         * tramp-ppc.c: fixed class init trampoline.
24533         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24534
24535 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24536
24537         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24538         mini.c: more ppc changes/fixes.
24539
24540 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24541
24542         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24543         Also optimize the case when the arguments are the same in the caller 
24544         and in the callee.
24545
24546         * iltests.il: Add tests for tail calls with valuetype arguments.
24547
24548 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24549
24550         * mini-ppc.c: fixes for struct return type.
24551
24552 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24553
24554         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24555         mono_spillvar_offset() to arch-specific code.
24556
24557 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24558
24559         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24560
24561 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24562
24563         * exceptions-x86.c: Fix stack space leaks.
24564         
24565         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24566         registers from the lmf if the method has save_lmf set.
24567
24568 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24569
24570         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24571         of icall wrappers into InvokeInDomain, since these are now per-domain.
24572
24573 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24574
24575         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24576         make some opcode emulation and intrinsic ops enabled/disabled 
24577         according to the architecture. More fixes.
24578
24579 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24580
24581         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24582
24583 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24584
24585         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24586         arch-specific handling for 'this' and struct return type to
24587         arch-specific code.
24588
24589 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24590
24591         * aot.c: prevent divide by zero error when reporting (it happened with
24592         Accessibility.dll).
24593
24594 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24595
24596         * mini.h (inst_switch): Remove unused macro.
24597
24598 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24599
24600         * aot.c:
24601         (load_aot_module): free 'info->methods' and 'info' properly. No more
24602         "free(): invalid pointer blah" messages when you have an old aot
24603         compiled assembly.
24604
24605 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24606
24607         * jit-icalls.c, mini.c: Added support for context static fields.
24608
24609 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24610
24611         * mini.c (mono_method_blittable): Methods which set LastError are not 
24612         blittable either. Fixes #51108.
24613         
24614 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24615
24616         * mini.c: flush icache.
24617         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24618
24619 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24620
24621         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24622
24623 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24624
24625         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24626         safe on IA32.
24627
24628         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24629         vararg calls.
24630
24631         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24632
24633 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24634
24635         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24636         instruction when the result is discarded.
24637
24638         * iltests.il (test_0_div_regalloc): New regression test.
24639
24640         * arrays.cs: Fix compilation error.
24641
24642 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24643
24644         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24645         float rules to inssel-x86.brg: sane architectures with FP registers
24646         don't need to implement these rules.
24647
24648 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24649
24650         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24651
24652 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24653
24654         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24655         implementation of 32 bit systems.
24656
24657 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24658
24659         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24660         (Jeroen Zwartepoorte).
24661
24662 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24663
24664         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24665         the caller and the callee matches.
24666         
24667         * mini.c (mono_method_to_ir): Add comment.
24668
24669         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24670         signbit is missing on some platforms.
24671
24672 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24673
24674         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24675
24676         * mini.c (setup_jit_tls_data): Call the new function.
24677         
24678         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24679
24680         * mini-x86.c: Add experimental support for fast access to the lmf
24681         structure under NPTL/Linux 2.6.x.
24682
24683 2003-11-06  Martin Baulig  <martin@ximian.com>
24684
24685         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24686         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24687         the debugger.
24688
24689 2003-11-02  Martin Baulig  <martin@ximian.com>
24690
24691         * mini.c (inflate_generic_field): New static method.
24692         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24693         generic instance and the field is declared in a generic type, call
24694         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24695
24696 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24697
24698         * mini.h mini.c (mono_method_same_domain): New function to return
24699         whenever the caller and the callee are in the same domain.
24700
24701         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24702
24703 2003-10-30  Martin Baulig  <martin@ximian.com>
24704
24705         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24706         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24707         method parameters.
24708         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24709         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24710
24711 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24712
24713         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24714         propagation.
24715
24716         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24717         object here, so it is in the correct appdomain etc.
24718
24719 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24720
24721         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24722         already done.
24723         (mono_method_to_ir): Avoid freeing the type created returned from
24724         mono_type_create_from_typespec, since it is put into an internal cache
24725         by the function. Fixes pointer.exe.
24726
24727         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24728         trampolines for icalls and pinvokes as well. Fixes #33569.
24729
24730 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24731
24732         * mini.c: Update after appdomain changes.
24733
24734         * mini.c (mono_jit_compile_method_inner): Allways compile native
24735         method wrappers in the root domain, since there can only be one
24736         instance of them, whose address is stored in method->info.
24737
24738 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24739
24740         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24741         environment variable. Instead detect automatically whenever running
24742         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24743         valgrind.h.
24744
24745 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24746
24747         * trace.c, trace.h: New files that implement the new trace option
24748         parsing. 
24749
24750         * driver.c: Document new --trace options.
24751
24752         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24753         mini-x86.c: Apply:
24754
24755         -       if (mono_jit_trace_calls)
24756         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24757
24758         * mini.h: prototypes.
24759         
24760 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24761
24762         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24763
24764         * mini.c inssel.brg: Implement typedefbyref opcodes.
24765
24766         * mini.c (mono_jit_compile_method): Remove unused local variable.
24767
24768         * mini.c (mono_jit_compile_method_inner): Ditto.
24769         
24770 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24771
24772         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24773         
24774         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24775
24776 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24777
24778         * mini.c (mono_no_aot): Remove unused global variable.
24779
24780         * mini.c: Thread safety fixes.
24781
24782 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24783
24784         * mini.c (mono_create_class_init_trampoline): Add a lock around
24785         class_init_hash_addr.
24786
24787         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24788         #30073.
24789
24790         * mini.c: Decompose the NEWARR instruction before decomposing its
24791         arguments. Fixes #30073.
24792
24793 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24794
24795         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24796         convention.
24797
24798 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24799
24800         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24801
24802         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24803
24804         * driver.c: Add support for compiling icall wrappers to --compile.
24805
24806 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24807
24808         * inssel.brg: The empty value in class->interface_offsets is -1, not
24809         0. Fixes #49287.
24810
24811 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24812
24813         * objects.cs: New test for 'is' operator on an array of interfaces.
24814
24815 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24816
24817         * tramp-ppc.c: update trampoline code to support jumps
24818         and class initialization.
24819
24820 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24821
24822         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24823
24824         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24825
24826         * inssel.brg (OP_UNBOX): Remove unused rule.
24827
24828         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24829         region instead of one for each method. Fixes #47813.
24830
24831 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24832
24833         * exceptions.cs (test_0_nested_finally): New regression test for
24834         nested exception handlers.
24835
24836         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24837
24838         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24839
24840         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24841         inlining.
24842
24843         * mini.c (mono_method_check_inlining): Make the inlining limit 
24844         configurable by an environment variable.
24845         
24846         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24847
24848         * mini.h: Bump AOT file version.
24849
24850         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24851         token, store the image along with the token, since the token might not 
24852         refer to the same image as the method containing the relocation, 
24853         because of inlining.
24854
24855 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24856
24857         * mini.c (mono_precompile_assemblies): New function to compile
24858         all methods in all loaded assemblies.
24859
24860         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24861
24862         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24863         iassign and fassign to int*, since they can contain large negative
24864         values if the register is spilled. Also added some comments. Fixes
24865         #45817.
24866
24867         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24868         under Win32. Fixes #42964.
24869
24870 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24871
24872         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24873
24874         * aot.c: Added support for AOT compiling methods which contain calls
24875         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24876         handled.
24877         
24878         * driver.c (compile_all_methods): Run the compilation in a thread
24879         managed by mono. Fixes #44023.
24880
24881         * mini.c (mono_codegen): Print full method name in verbose output.
24882
24883         * mini-x86.c (mono_arch_patch_code): Fix warning.
24884         
24885         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24886         jumps, since the method we are jumping to might be domain-specific.
24887
24888         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24889
24890 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24891
24892         * inssel.brg: string chars are unsigned.
24893
24894 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24895
24896         * TODO: New todo item.
24897
24898         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24899         which calls mono_runtime_class_init and patches the call site to
24900         avoid further calls.
24901         (mono_arch_create_class_init_trampoline): New arch specific function 
24902         to create a class init trampoline.
24903         (create_trampoline_code): Generalized so it can create
24904         class init trampolines as well.
24905
24906         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24907         (mono_create_class_init_trampoline): New function to create and cache
24908         class init trampolines.
24909         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24910         vtable given the address of a class init trampoline. Used by the
24911         patching process.
24912         (mono_codegen): Generate a call to a trampoline instead of
24913         mono_runtime_class_init in LDSFLD[A].
24914         (mono_codegen): Add relocations for the new trampoline.
24915         
24916         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24917         MONO_PATCH_INFO_CLASS_INIT.
24918
24919         * mini.h: Bump AOT version number.
24920
24921         * aot.c: Create a copy of the loaded code instead of using the original
24922         so methods which call each other will be close in memory, improving
24923         cache behaviour.
24924         
24925         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24926         patch since it breaks the regression tests.
24927         
24928         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24929         for the register saving instruction sequence since the 
24930         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24931
24932 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24933
24934         * TODO: Fix todo item && remove another.
24935
24936 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24937
24938         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24939         previous checkin.
24940
24941         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24942         function of the module.
24943
24944         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24945         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24946         --no-aot command line option.
24947
24948 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24949
24950         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24951         by Bernie Solomon (bernard@ugsolutions.com).
24952
24953         * inssel.brg: Refactor the interface offset table related code into
24954         its separate functions and add support for the AOT case.
24955
24956 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24957
24958         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24959         
24960         * aot.c: Added mono_aot_verbose variable and made all debugging
24961         output depend on the value of this variable.
24962
24963         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24964         method_label and info_label.
24965
24966         * mini.h mini-x86.c aot.c: Added a new relocation type 
24967         MONO_PATCH_INFO_IID for klass->interface_id.
24968
24969         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24970         the MonoJitInfo structure.
24971
24972         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24973         a non-root appdomain in shared mode.
24974
24975 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24976
24977         * aot.c: make aot loader less verbose. Remove free of unused variable.
24978
24979 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24980
24981         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24982
24983         * .cvsignore: Added *.dll.
24984
24985         * mini.c (mono_print_tree_nl): New function callable while debugging.
24986
24987         * mini.c (mono_print_code): Export this.
24988
24989         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24990         patched code.
24991
24992 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24993
24994         * mini.h (MonoCompile): Added 'jit_info' field.
24995
24996         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24997         the cfg structure, since it is needed by the AOT compiler.
24998
24999         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25000
25001         * aot.c: A major rewrite. Changes include:
25002         - save exception tables for methods which have them.
25003         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25004         to g_module_symbol.
25005         - reworked the file format so it is now much smaller and needs
25006         fewer relocation entries.
25007         
25008 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25009
25010         * aot.c (load_aot_module): Fix build bustage on platforms without
25011         Boehm GC.
25012
25013 2003-09-04  Martin Baulig  <martin@ximian.com>
25014
25015         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25016
25017 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25018
25019         * TODO: Some new optimization ideas.
25020
25021         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25022
25023         * aot.c: Save the optimization flags used to compile the code into
25024         the AOT module.
25025
25026         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25027         support emitting domain specific code.
25028         
25029         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25030         no longer domain neutral. It can be made domain neutral by compiling 
25031         with --optimize=shared.
25032
25033         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25034         between appdomains.
25035
25036         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25037         loading of AOT code.
25038
25039         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25040         
25041         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25042         if there is no domain neutrality information.
25043
25044 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25045
25046         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25047         format version into the generated library.
25048
25049         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25050         callee method into the caller since one of them could be shared.
25051
25052         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25053         system exceptions from AOT code now works.
25054
25055         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25056         method if it is domain neutral and the callee is not.
25057
25058         * graph.c (cfg_emit_one_loop_level): Fix warning.
25059
25060 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25061
25062         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25063         last checkin.
25064
25065 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25066
25067         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25068         is needed  by code which is executed before mono_runtime_init ().
25069         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25070         
25071         * mini.c (mono_thread_abort): Fix warning.
25072         (mono_jit_compile_method): Call static constructor in the AOT case too.
25073
25074         * aot.c (mono_compile_assembly): Fix warning.
25075
25076 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25077
25078         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25079
25080 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25081
25082         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25083
25084         * cpu-pentium.md: Fix the length of call opcodes so they include the
25085         ESP restoring instruction. Fixes #47968.
25086
25087 2003-08-28  Martin Baulig  <martin@ximian.com>
25088
25089         * mini-x86.c (mono_arch_call_opcode): Added support for
25090         MONO_TYPE_GENERICINST.
25091
25092         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25093
25094 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25095
25096         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25097         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25098
25099         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25100         metadata_section.
25101
25102 2003-08-26  Martin Baulig  <martin@ximian.com>
25103
25104         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25105         when reporting an error, set this to the actual error location.
25106         (mono_method_to_ir): Report the correct error location if
25107         get_basic_blocks() returned an error.
25108
25109 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25110
25111         * mini.c (mono_type_blittable): OBJECT is not blittable.
25112         (mono_method_blittable): Methods which have marshalling descriptors
25113         are not blittable either. Fixes #47842.
25114
25115 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25116
25117         * driver.c mini.c: Use an environment variable instead of a global 
25118         variable. Also fix the build.
25119
25120         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25121         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25122         reporting this. 
25123
25124         * driver.c mini.c: Added --with-valgrind option to turn off some
25125         code which prevents mono from running under valgrind.
25126
25127         * mini.c (mono_emit_call_args): Fixed warning.
25128
25129         * mini.c (mono_emulate_opcode): Fixed warning.
25130
25131 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25132
25133         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25134         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25135         regalloc.c, regalloc.h: specify available registers in arch-specific
25136         code and support floats in the regallocator (patch by Laurent Morichetti 
25137         <l_m@pacbell.net>)
25138
25139 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25140
25141         * mini.c: mono_thread_current() can be called only after
25142         mono_runtime_init(): rearrange code to not call it early on.
25143
25144 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25145
25146         * mini.c: allocate jump tables in the code mempools.
25147
25148 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25149
25150         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25151         freed.
25152
25153 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25154
25155         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25156         12 to 16.  This fixes bug #47453.
25157
25158
25159 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25160
25161         * mini-ppc.c: fixed indexed load and unsigned compares.
25162
25163 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25164
25165         * mini.c: reenabled installation of handler for
25166           thread abort signal.
25167
25168 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25169
25170         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25171         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25172         until it's fixed and actually useful.
25173
25174 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25175
25176         * inssel-long32.brg: couple more opcodes implemented.
25177
25178 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25179         
25180         * mini-sparc.c: Even more opcodes implemeted.
25181
25182 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25183
25184         * mini-sparc.c: More opcodes implemented.
25185
25186 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25187
25188         * mini-sparc.c: More opcodes implemented.
25189
25190 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25191
25192         * inssel-sparc.brg: Add some needed rules.  Direct
25193         copy from PPC.
25194         * Makefile.am: Use inssel-sparc.brg
25195         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25196         an assert happy for now.
25197
25198 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25199
25200         * mini-sparc.c: Fixed compile errors.
25201         * exceptions-sparc.c: Same.  We now produce a mono binary 
25202         on sparc-linux.  Yea.
25203
25204 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25205
25206         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25207         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25208         They compile, but do not work.
25209
25210 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25211
25212         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25213         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25214         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25215         (ct@gentoo.org).
25216
25217 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25218
25219         * mini.c: more opcodes implemented and better support for generics.
25220
25221 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25222
25223         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25224         * mini.c, mini.h: first cut at generics support: some new instructions 
25225         added and changed the behaviour of some of the existing ones.
25226
25227 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25228
25229         * mini.c: Removed definition of metadata_shared mutex here.
25230
25231 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25232
25233         * mini-x86.c: make vararg calls work for instance methods.
25234
25235 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25236
25237         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25238         returns the arguments in a separte list, now.
25239
25240 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25241
25242         * aot.c, mini.c: updates for array type representation changes.
25243
25244 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25245
25246         * mini.c: register function to perform jit shutdown.
25247
25248 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25249
25250         * mini.c: use a faster allocator if possible.
25251
25252 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25253
25254         * aot.c: some cleanups and portability changes.
25255
25256 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * mini.c: use faster allocation for CEE_BOX if possible.
25259
25260 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25261
25262         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25263         Moved inlined mempcy code to its own function so that is can be
25264         reused. Added an inline memset function as well (optimized initobj).
25265         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25266
25267 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25268
25269         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25270
25271 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25272
25273         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25274         arch code can setup the cpu for CLR execution, if needed.
25275         We use it on x86 to set the precision of FP operations.
25276
25277 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25278
25279         * mini.c: disable some optimizations if we can guess they'll cost too
25280         much for a given method.
25281
25282 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25283
25284         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25285         
25286 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25287         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25288         info collection support.
25289
25290 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25291
25292         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25293         is now implemented in the profiling API. Get rid of a couple of
25294         unnecessary global variables.
25295
25296 2003-06-15  Nick Drochak <ndrochak@gol.com>
25297
25298         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25299         * cpu-g4.md: add op_bigmul and op_bigmul_un
25300         * cpu_pentium.md: add op_bigmul_un
25301         * inssel-long32.brg: add rule for unsigned bigmul
25302         * mini-ops.h: define OP_BIGMUL_UN
25303         * mini-x86.c: THE BUG: handle (un)signed properly
25304         * mini.c: choose unsigned opcode if needed.
25305         This set of patches fixes bug #44291
25306
25307 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25308
25309         * mini.c (optimize_branches): improved to handle all kinds of
25310         conditional branches.
25311
25312 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25313
25314         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25315         don't raise exceptions.
25316
25317 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25318
25319         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25320         to arch-specific files.
25321
25322 2003-06-09  Martin Baulig  <martin@ximian.com>
25323
25324         * Makefile.am (libs): Added $(LIBGC_LIBS).
25325
25326 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25327
25328         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25329         and OP_ATAN (fixes bug#44293).
25330
25331 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25332
25333         * Makefile.am, mini-x86.c: rename cpu description array to
25334         pentium_desc, since some compilers define the 'pentium' preprocessor
25335         symbol.
25336
25337 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25338
25339         * mini.c (mini_select_instructions): add explicit branch if the
25340         following block is not the false target of a conditional branch -
25341         we need this with any optimization that reorder or remove bblocks
25342
25343         * mini.c (optimize_branches): bug fixes
25344
25345 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25346
25347         * mini.c (mono_method_to_ir): inline static readonly fields
25348
25349         * ssa.c (fold_tree): start cfold support for long (very simple
25350         cases only)
25351
25352         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25353
25354 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25355
25356         * inssel.brg: fixed memcpy (bug #44219).
25357
25358 2003-06-05  Dick Porter  <dick@ximian.com>
25359
25360         * driver.c: Set the glib log levels to not abort if g_message
25361         recurses.
25362
25363         g_set_prgname() has to happen before mini_init() so that the
25364         process handle gets the info.
25365         
25366 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25367
25368         * driver.c: add intrins to the default optimizations to get wider
25369         exposure.
25370
25371 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25372
25373         * mini.h: some large basic blocks will overflow a 16-bit
25374         integers for symbolic registers.
25375
25376 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25377
25378         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25379         (mono_arch_output_basic_block): fix bug 43499 
25380
25381 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25382
25383         * mini.c: kill duplicated definition of mono_debug_format.
25384
25385 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25386
25387         * mini-x86.c, arrays.cs: fixed register allocation bug.
25388
25389 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25390
25391         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25392
25393         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25394
25395 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25396
25397         * mini.c:
25398         (print_method_from_ip): also print source location information if
25399         available.
25400
25401 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25402
25403         * mini.c (mono_find_block_region): bug fix in region code
25404         (mini_method_compile): enable removing unreachable code again, but
25405         only in methods without exception clauses.
25406
25407 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25408
25409         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25410         Implemented arglist opcode and handling of TypedReference type.
25411         Fixed x86 call convention when a structure is returned.
25412         Minimal support for calling static vararg methods.
25413
25414 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25415
25416         * mini.c (mini_method_compile):  always remove unreachable code,
25417         because the code in them may be inconsistent  (access to dead
25418         variables for example).
25419
25420 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25421
25422         * driver.c, debug-mini.c: warning fixes.
25423
25424 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25425
25426         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25427
25428 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25429
25430         * mini.c: thread-static fields are registered in mono_class_vtable(),
25431         so ensure the function is called before checking for them.
25432
25433 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25434
25435         * mini.c (optimize_branches): fix for bug 43586
25436
25437         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25438         overflow (fixes Bug #43639)
25439
25440 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25441
25442         * mini.c, objects.cs: allow the use of stobj for primitive types.
25443
25444 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25445
25446         * mini.c: be less strict about argument checking until we support
25447         running the verifier.
25448
25449 2003-05-27  Nick Drochak <ndrochak@gol.com>
25450
25451         * basic-long.cs: tests for (ulong)int * (ulong)int also
25452         * mini.c: use the same trick for (ulong)int * (ulong)int
25453
25454 2003-05-27  Nick Drochak <ndrochak@gol.com>
25455
25456         * basic-long.cs: add regression test for (long)int * (long)int
25457         * cpu-pentium.md: add op_bigmul specification
25458         * inssel-long32.brg: add OP_BIGMUL rule
25459         * mini-ops.h: add OP_BIGMUL
25460         * mini-x86.c: register allocator: handle case where src1 needs to be
25461         in EAX.
25462         * mini.c: substitute special BIGMUL opcode in the tree for 
25463         (long)int * (long)int
25464
25465 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25466
25467         * jit-icalls.c: call the type ctor on field access if needed.
25468
25469 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25470
25471         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25472         to a method (including results of ldelema, bug#43207).
25473
25474 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25475
25476         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25477         colors to show exception handler blocks.
25478
25479         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25480         (fix for pinvoke7.cs).
25481
25482 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25483
25484         * mini.h, mini.c: ensure correct initialization order for types that
25485         require it. Prepare for lazy compilation of jit icall wrappers.
25486         Provide a name for opcode emulation to reduce unneeded mallocing.
25487
25488 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25489
25490         * mini-x86.c: better register restoring code and profiling
25491         support for tail calls.
25492
25493 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25494
25495         * mini.h, driver.c: prepare for leaf methods optimization.
25496
25497 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25498
25499         * mini.c: get targets of branches before converting a method.
25500
25501 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25502
25503         * mini.c (optimize_branches): added some experimental code (disbaled) 
25504
25505 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25506
25507         * mini.c (optimize_branches): fix branch to branch optimization 
25508
25509         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25510
25511         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25512
25513         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25514
25515         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25516         if needed.
25517
25518 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25519
25520         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25521         enable use of interface variables again.
25522
25523         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25524         I1 to registers because there is no simply way to sign extend 8bit
25525         quantities in caller saved registers on x86.
25526
25527         * inssel-float.brg: set costs of some rules to 2 so
25528         that monobure always select the arch. specific ones if supplied,
25529         regardless of the order we pass the files to monoburg.
25530
25531 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25532
25533         * mini.c, mini-x86.c: since the magic trampoline for jumps
25534         can't patch the code directly, we do it as soon as the
25535         method gets compiled.
25536
25537 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25538
25539         * mini-x86.c, mini.h: introduce a new patching method
25540         to support CEE_JMP and tail calls.
25541         * mini.c: obey tail.call. Don't precompile methods target
25542         of CEE_JMP.
25543         * tramp-x86.c: new trampoline code to handle methods
25544         reached through a jump.
25545
25546 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25547
25548         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25549         bit values to registers
25550
25551 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25552
25553         * mini.c (mono_compile_get_interface_var): share interface
25554         variables if possible.
25555
25556 2003-05-16  Martin Baulig  <martin@ximian.com>
25557
25558         * debug-mini.c (mono_init_debugger): New function to initialize
25559         the debugger.  This is not in the debugger since it needs to
25560         access some of mini's internals.
25561
25562 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25563
25564         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25565
25566 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25567
25568         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25569         for value type handling.
25570
25571 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25572
25573         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25574         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25575
25576 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25577
25578         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25579           the constructor through a proxy.
25580
25581 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25582
25583         * jit-icalls.c, inssel.brg: fixes to array element address
25584         calculations.
25585
25586 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25587
25588         * mini-x86.c (is_regsize_var): allocate pointer to registers
25589
25590 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25591
25592         * driver.c: fixed typo, added intrins to the set of optimizations
25593         tested with regressions.
25594
25595 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25596
25597         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25598         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25599         test case.
25600
25601 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25602
25603         * inssel.brg: remove some common pop instructions without side effects
25604
25605 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25606
25607         * inssel-x86.brg: fixed thinko in int to double conversions.
25608
25609 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25610
25611         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25612
25613 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25614
25615         * inssel-long32.brg: two more missing instructions.
25616
25617 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25618
25619         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25620         if not already set.
25621
25622 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25623
25624         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25625         correctly.
25626
25627         * basic-float.cs: Added tests for negative zero.
25628
25629 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25630
25631         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25632         a couple of missing operations for long casts, with test cases.
25633
25634 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25635
25636         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25637
25638 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25639
25640         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25641         code size estimation.
25642
25643 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25644
25645         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25646         abstract methods (fix bug 42542)
25647
25648         * aot.c: add ability to handle array types
25649         
25650 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25651
25652         * mini.c: Call the _specific versions of the object allocation
25653         functions if possible.
25654
25655 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25656
25657         * driver.c: call setlocale ().
25658
25659 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25660
25661         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25662         windows build.
25663
25664 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25665
25666         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25667
25668         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25669         wrappers (fix bug 42122)
25670
25671 2003-05-04  Martin Baulig  <martin@ximian.com>
25672
25673         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25674
25675         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25676         s/mini_set_defaults/mono_set_defaults/g.
25677
25678 2003-05-04  Martin Baulig  <martin@ximian.com>
25679
25680         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25681
25682 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25683
25684         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25685         (reported by Don Roberts).
25686
25687 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25688
25689         * mini.c: temporarily work around two bugs for this release.
25690
25691 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25692
25693         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25694         that contains -export-dynamic and it makes using the ld script
25695         useless.
25696         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25697
25698 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25699
25700         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25701         specific cpu.
25702
25703 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25704
25705         * mini.c: make sure leave calls all the needed finally blocks,
25706         even when the target jumps out of multiple exception clauses.
25707
25708 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25709
25710         * ldscript, Makefile.am: add linker script to reduce the number of
25711         exported symbols (should also fix the issues with libwine defining
25712         some of the same symbols in io-layer).
25713
25714 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25715
25716         * driver.c (mini_main): Avoid assertion when no file name is given on 
25717         the command line.
25718
25719 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25720
25721         * driver.c: added --version/-V command line option.
25722         Added the inline optimization in the regression tests.
25723
25724 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25725
25726         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25727         to the type in the method signature (fixes bug#42134).
25728
25729 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25730
25731         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25732
25733 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25734
25735         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25736
25737 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25738
25739         * driver.c: fixed bug #42100.
25740
25741 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25742
25743         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25744
25745 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25746
25747         * mini.c: moved most of the code required to do inlining to its own
25748         function so it can be reused. Inline also ctors if appropriate.
25749
25750 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25751
25752         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25753         the runtime can call mono API functions.
25754
25755 2003-04-27  Martin Baulig  <martin@ximian.com>
25756
25757         * debug-mini.c (mono_debug_init_method): Added
25758         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25759         send a notification to the debugger.
25760
25761         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25762         running in the Mono Debugger, just pass the breakpoint number to
25763         mono_debug_init_method().
25764
25765         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25766
25767 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25768
25769         * mini.c: allow some more unsafe compares.
25770
25771 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25772
25773         * mini-x86.c, Makefile.am: make distcheck works (partially from
25774         a patch by Richard Lee <r.h.lee@attbi.com>).
25775         * regset.c, regset.h: removed, they are unused.
25776
25777 2003-04-25  Dick Porter  <dick@ximian.com>
25778
25779         * driver.c: Usage reports the name as 'mono' not 'mini'
25780         * exceptions-x86.c: Build and run on freebsd
25781
25782 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25783
25784         * Makefile.am: install the program with the 'mono' name and
25785         the library as libmono instead of mini and libmini.
25786
25787 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25788
25789         * driver.c: provide the APIs for the embedding interface of the old jit.
25790
25791 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25792
25793         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25794
25795 2003-04-23  Martin Baulig  <martin@ximian.com>
25796
25797         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25798
25799         * driver.c: Added `--debug' command line argument to enable
25800         debugging support.
25801
25802 2003-04-23  Martin Baulig  <martin@ximian.com>
25803
25804         * debug.[ch]: Removed.  The code is now in
25805         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25806
25807         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25808         last six months.
25809
25810 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25811
25812         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25813
25814 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25815
25816         * mini.c:
25817         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25818         mono_domain_finalize.
25819         (mini_method_compile): use mono_method_profile* if the the option is
25820         enabled.
25821
25822 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25823
25824         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25825         methods with their wrapper.
25826
25827         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25828         methods with their wrapper.
25829
25830         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25831         their wrapper.
25832
25833         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25834         wrapper.
25835
25836         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25837         methods.
25838
25839 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25840
25841         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25842
25843 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25844
25845         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25846         of the mempool. This is slightly faster and uses less memory
25847
25848 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25849
25850         * mini.c: avoid O(n) allocation for variables.
25851
25852 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25853
25854         * mini.c: handle items on the stack after inlining methods.
25855
25856 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25857
25858         * mini.c: make the method->opcode optimization dependent
25859         on MONO_OPT_INSTRINS and do it lazily.
25860
25861 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25862
25863         * driver.c: print overall results at the end of regression run.
25864
25865 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25866
25867         * inssel.brg: don't overwrite symbolic registers.
25868
25869 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25870
25871         * inssel-x86.brg: fix conversion from long to float.
25872
25873 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25874
25875         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25876
25877 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25878
25879         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25880
25881         * driver.c: Added --print-vtable option as in the old JIT.
25882
25883 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25884
25885         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25886
25887 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25888
25889         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25890
25891 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25892
25893         * mini.c regalloc.c regalloc.h: Fix memory leak.
25894
25895 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25896
25897         * aot.c (mono_aot_get_method): register all used strings
25898
25899 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25900
25901         * mini.c: always intern strings references with ldstr at compile time.
25902
25903 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25904
25905         * Makefile.am: add BUILT_SOURCES.
25906
25907 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25908
25909         * driver.c: give a better error message when the assembly to execute
25910         doesn't have an entry point.
25911
25912 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25913
25914         * Makefile.am: added hack for automake
25915
25916         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25917         correct sematics.
25918
25919         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25920
25921 22003-04-07  Martin Baulig  <martin@ximian.com>
25922
25923         * Makefile.am: Added Makefile.am.
25924
25925         * debugger-main.c: Removed, this is now in the debugger where it
25926         belongs.
25927
25928         * mini.pc.in: Call this package `mini' for the moment.
25929
25930
25931
25932
25933
25934
25935
25936
25937
25938
25939
25940
25941
25942
25943