2010-07-09 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
4         are only callable using invoke.
5
6 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
7
8         * mini-llvm.c (process_bb): Use emit_load () in one more place.
9
10         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
11         MONO_LLVM=xxx is actually usable.
12
13         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
14         since LLVM might be able to hoist them out of loops.
15         (emit_store): Ditto.
16
17 2010-07-08  Neale Ferguson <neale@sinenomine.net>
18
19         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
20         in typeload-unaligned test.
21
22 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
23
24         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
25
26         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
27         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
28         generic trampolines+rgctx fetch trampolines.
29
30 2010-07-08  Geoff Norton  <gnorton@novell.com>
31
32         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
33
34 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
35
36         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
37
38         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
39         is not defined in the LLVM case to keep the imt arg alive.
40
41 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
42
43         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
44         functions, now its 'llvm_<FOO>_trampoline'.
45
46         * method-to-ir.c (emit_imt_argument): Fix llvm support.
47
48         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
49         cannot be passed in the same call.
50
51         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
52         register to be the same as the RGCTX register, the two can't be used together on
53         the same call.
54
55 2010-07-05  Miguel de Icaza  <miguel@novell.com>
56
57         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
58         that allows the user to force the VM to use llvm or sgen.
59
60 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
61
62         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
63         before processing the exception on PPC too.
64
65         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
66
67         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
68         'this' is always passed as the first argument, before the vtype ret arg. This
69         simplifies get_this_arg_reg () and LLVM integration.
70
71 2010-07-05  Martin Baulig  <martin@ximian.com>
72
73         * exceptions-x86.c (mono_arch_handle_exception): Port this to
74         Windows; apply my patch from r159782 in the mono-2-6 branch.
75
76 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
77
78         * Makefile.am: Don't build the debug assembler files if we're building without
79         debugger support.
80
81 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
82
83         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
84
85 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
86
87         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
88         length.
89
90         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
91         regs [ARMREG_FP] instead.
92
93         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
94
95         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
96         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
97
98         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
99
100         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
101
102         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
103
104         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
105         without IMT_REG defined (ARM).
106
107         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
108         the trampolines.
109
110 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
111
112         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
113
114 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
115
116         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
117         definitions to match their declarations and vice-versa.
118
119 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
120
121         * Makefile.am (common_sources): Add mini-llvm.h.
122
123         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
124
125 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
126
127         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
128         compiling.
129
130 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
131
132         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
133         implemt the option of loading the llvm backend from a module so
134         that we can have a single binary and the bloat from llvm is
135         only experienced when it is actually loaded.
136
137 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
138
139         * mini-llvm.c: remove direct access to mono_defaults.
140
141 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
142
143         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
144         a no-op.
145
146         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
147
148         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
149         is now mono_arch_nullify_class_init_trampoline ().
150         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
151         opcodes, they are no longer needed.
152
153         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
154         now mono_arch_nullify_class_init_trampoline ().
155         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
156         opcodes, they are no longer needed.
157
158         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
159         vtable on platforms which support it.
160
161         * driver.c: Print the full LLVM version we are compiled against in --version.
162
163         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
164         a bit better. Decode nesting information to fix eh support for llvm+aot.
165
166         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
167         methods.
168
169         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
170
171         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
172         is always passed as the first argument, before the vtype ret arg. This simplifies
173         get_this_arg_reg () and LLVM integration.
174
175 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
176
177         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
178         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
179         most of the vcall specific code to mono_vcall_trampoline () from
180         common_call_trampoline ().
181
182 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
183
184         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
185         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
186         if the callsite is patched.
187
188         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
189         the llvm branch.
190
191         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
192         the trampoline in the xdebug info.
193
194         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
195         as well.
196
197 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
198
199         * mini-llvm.c: Fix a few problems exposed by make check.
200
201 2010-06-25  Mark Probst  <mark.probst@gmail.com>
202
203         * mini-trampolines.c (common_call_trampoline): An ugly hack to
204         work around a potentially very hard to fix problem with inflating
205         generic methods.
206
207 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
208
209         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
210         problem has been fixes.
211
212 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
213
214         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
215
216         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
217         It might be be better to define a MonoGCJitOptions structure later and have the
218         GC return that.
219
220         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
221
222         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
223
224         * debugger-agent.c (get_objref): Implement support for sgen.
225
226         * driver.c: Remove the unused gc_wrapper.h include.
227
228         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
229         implementation.
230
231 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
232
233         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
234
235         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
236         in MonoCompile.
237
238         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
239         instead.
240
241 2010-06-23  Miguel de Icaza  <miguel@novell.com>
242
243         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
244         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
245
246         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
247         it only for Boehm diagnostics.
248
249         * Makefile.am: Make the file a bit more consistent.
250
251         * debug-debugger.c: Wrap the entire file with an #ifdef
252         MONO_DEBUGGER_SUPPORTED to simplify the build.
253
254         * Makefile.am: Fix the opcodes build issue by including the
255         source, not by including the .lo file directly
256
257         Always bring the MDB sources into the build, to drop the
258         dependency on the AM_CONDITIONAL from configure.in as the hard
259         debugger supports Boehm, but not Sgen, this simplifies the build. 
260
261         * Renamed the *.s files into *.S
262
263 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
264
265         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
266         wb for now on 64bits systems while issues with valuetype returns
267         are not fixed.
268
269 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
270
271         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
272         passes by calling createStandardFunctionPasses ().
273
274 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
275
276         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
277
278 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
279
280         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
281         MONO_INST_FAULT.
282
283         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
284         allow better optimization if the OP_LDADDR which caused the flag to be set was
285         optimized away.
286
287         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
288
289         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
290         the type token.
291
292         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
293
294         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
295
296 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
297
298         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
299         to handle the code sequence generated for non-near calls. Fixes #616056.
300
301 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
302
303         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
304
305         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
306
307         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
308         nesting clause too.
309         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
310         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
311         trampoline which saves the context, so changes made to callee saved registers in
312         finally clauses are visible to a nesting catch clause.
313
314         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
315
316         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
317         in LLVM compiled code.
318         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
319         the finally handler has ran.
320
321         * mini.h (ResumeState): New structure containing information required to resume
322         exception handling after executing LLVM compiled finally clauses.
323
324         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
325         bit, by passing all the registers as one argument.
326
327 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
328
329         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
330         to avoid an assert.
331
332 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
333
334         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
335
336         * aot-compiler.c aot-runtime.c: Fix LLVM support.
337
338         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
339         pad, branch to a new bblock instead.
340
341         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
342         orig_method.
343
344         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
345
346         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
347
348 2010-06-17  Geoff Norton  <gnorton@novell.com>
349
350         * mini-arm.h:
351         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
352         can be used by sgen.
353
354 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
355
356         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
357
358         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
359         fails.
360
361         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
362         the ip done by throw_exception (), it is not needed for corlib exceptions.
363
364 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
365
366         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
367         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
368         of size > 5 words. This support fast barriers for value types up to
369         256/512 bytes which     beyond that the copying itself is the major issue.
370
371         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
372         for gsharing, so use it.
373
374         This eliminate all calls to mono_value_copy from managed code in
375         gmcs, fsharp and ipy.
376
377         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
378
379         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
380         performance kept
381
382         * mini.c (mini_init): Register new icall.
383
384 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
385
386         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
387         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
388
389 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
390
391         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
392         value types as the overhead is huge. Manually expand it up to 5 words to
393         avoid code bloat.
394
395         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
396         is an exception that performance is dominated by mono_value_copy.
397
398         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
399
400 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
401
402         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
403         trampolines on x86, since those have their own cconv.
404
405         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
406         exception trampolines.
407
408         * tramp-x86.c: Add xdebug info for a few trampolines.
409
410         * mini-llvm.c: Set the name of the arguments.
411
412         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
413         using a block address if using the LLVM mono branch.
414
415         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
416         trampolines.
417
418 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
419
420         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
421
422         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
423
424         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
425
426         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
427
428         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
429         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
430         to identify the vtable slot address plus the method which needs to be compiled.
431
432         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
433         using llvm.
434
435         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
436         'this' is always passed as the first argument, before the vtype ret arg. This
437         simplifies get_this_arg_reg () and LLVM integration.
438
439         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
440         the latest changes.
441
442         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
443         these trampolines.
444
445         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
446
447         * mini-llvm.c: Fix compilation with llvm 2.6.
448
449         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
450
451         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
452         defined.
453
454         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
455         is always passed as the first argument, before the vtype ret arg. This simplifies
456         get_this_arg_reg () and LLVM integration.
457
458 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
459
460         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
461
462         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
463         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
464         translate into much nicer code.
465
466 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
467
468         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
469         parameter index information. Use this to simplify a lot of code.
470
471         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
472
473 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
474
475         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
476         to fix infinite generic recursion. Fixes #612702.
477
478 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
479
480         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
481         imt trampoline per imt slot when using LLVM.
482
483 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
484
485         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
486
487 2010-06-09  Levi Bard  <levi@unity3d.com>
488
489         * debugger-agent.c: Clear unloaded types on appdomain unload.
490
491 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
492
493         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
494         Fixes #612206.
495
496         * exceptions.cs: Add a test.
497
498 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
499
500         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
501
502         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
503
504         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
505         so it doesn't have to do it.
506
507         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
508         process does not mix with ours.
509
510         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
511         ones.
512
513         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
514         loads/stores which can throw exceptions inside clauses.
515
516 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
517
518         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
519         one ENDFINALLY.
520
521         * mini.c (mini_init): Register mono_resume_unwind as an icall.
522
523 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
524
525         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
526
527         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
528         locals.
529
530 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
531
532         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
533         appdomain.
534
535 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
536
537         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
538         Use a separate generic class init trampoline for llvm, since it needs a different
539         signature.
540
541         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
542         includes the location of this/rgctx.
543
544         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
545         branch.
546
547 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
548
549         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
550
551         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
552         clause.
553
554 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
555
556         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
557         says so.
558
559         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
560
561         * aot-compiler.c (patch_to_string): New debugging helper function.
562
563 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
564
565         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
566         trampoline.
567
568         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
569
570         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
571
572         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
573
574         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
575         clauses.
576
577         * mini.c (create_jit_info): Print EH clause info for LLVM too.
578
579 2010-05-28  Mark Probst  <mark.probst@gmail.com>
580
581         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
582         cpobj with reference types.
583
584 2010-05-28  Mark Probst  <mark.probst@gmail.com>
585
586         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
587         write barrier for reference types.
588
589 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
590
591         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
592         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
593
594 2010-05-31  Martin Baulig  <martin@ximian.com>
595
596         Fix #608271.
597
598         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
599         clear_breakpoint() on all breakpoint events and remove them from the list.
600
601 2010-05-27  Martin Baulig  <martin@ximian.com>
602
603         Fix #605698.
604
605         * debugger-agent.c (method_commands, type_commands): Temporarily
606         set the appdomain while executing this method; do all metadata
607         calls in the debuggee's appdomain where user assemblies are loaded.
608
609 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
610
611         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
612
613 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
614
615         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
616
617 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
618
619         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
620         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
621         be referenced even after the header is freed.
622
623         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
624         section.
625
626 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
627
628 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
629
630         * genmdesc.c (main): Fixing the detection of the nacl switch.
631
632         Code is contributed under MIT/X11 license.
633
634 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
635
636         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
637
638         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
639
640         * mini.h (LLVM_CHECK_VERSION): New helper macro.
641
642 2010-05-25  Miguel de Icaza  <miguel@novell.com>
643
644         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
645         the Perl program
646
647         * genmdesc.c: Added support for nacl: key on the machine
648         description files to support the extra space required by Google
649         Native Client.
650
651 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
652
653         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
654
655 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
656
657         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
658         mono_runtime_class_init_full ().
659         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
660
661 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
662
663         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
664
665 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
666
667         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
668         two are not the same on ilp32.
669
670 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
671
672         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
673         added by mistake.
674
675         * mini-ppc.c: Fix the DISABLE_JIT build.
676
677 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
678
679         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
680         (make_writable): Remove this unused function.
681
682 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
683
684         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
685         structure. Make the labels to plt entries local symbols instead of assembler local
686         labels, since tha latter causes problems for the iphone linker.
687
688 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
689
690         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
691
692 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
693
694         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
695         (ppc_patch_full): Ditto.
696
697         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
698
699         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
700         if gshared is enabled, to avoid asserts in the trampoline code.
701
702         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
703         on ia64.
704
705 2010-05-15  Geoff Norton  <gnorton@novell.com>
706
707         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
708         xdebug mode.
709
710 2010-05-14  Geoff Norton  <gnorton@novell.com>
711
712         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
713         misaligned stack on darwin.
714
715 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
716
717         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
718         arm.
719
720 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
721
722         * xdebug.c: Fix ARM support.
723
724 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
725
726         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
727         and do most of the work on the normal stack.
728         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
729
730 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
731
732         * aot-compiler.c: Put non-code data into the .rodata section on linux.
733
734 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
735
736         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
737
738 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
739
740         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
741         and do most of the work on the normal stack.
742
743 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
744
745         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
746         and do most of the work on the normal stack even if sigaltstack is disabled.
747
748 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
749
750         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
751         UCONTEXT_REG_ constants are available on linux as well.
752         (mono_arch_monoctx_to_sigctx): Ditto.
753         (mono_arch_ip_from_context): Ditto.
754
755 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
756
757         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
758         other domains.
759
760 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
761
762         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
763         no longer needed.
764
765 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
766
767         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
768         if a breakpoint cannot be inserted.
769
770 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
771
772         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
773
774 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
775
776         * debugger-agent.c (frame_commands): Return an error instead of asserting if
777         no JIT info is found for the method.
778
779 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
780
781         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
782         in debug printf.
783
784 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
785
786         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
787         a list of arch specific trampolines.
788
789         * aot-compiler.c (emit_trampolines): Use it.
790
791 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
792
793         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
794         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
795         get rid of the _full from their name.
796
797 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
798
799         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
800         get_nullified_class_init_trampoline to remove some code duplication.
801
802 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
803
804         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
805         attach.
806
807 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
808
809         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
810
811         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
812
813         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
814         there is no need to jump through the first plt entry.
815
816         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
817
818         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
819         arch-specific function.
820         (mono_aot_get_plt_info_offset): Ditto.
821
822         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
823         mono_arch_init () to register jit icalls called from full-aot trampolines.
824         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
825         to mini-<ARCH>.c.
826
827         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
828         the specialized throw corlib exception trampoline, use a variant of the normal
829         trampoline along with a new C function which does the call to
830         mono_exception_from_token (), just like on x86.
831
832 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
833
834         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
835         Reorganize the full aot trampoline creation functions, instead of taking a bunch
836         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
837         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
838         creation functions on architectures which have the full-aot ones.
839
840 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
841
842         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
843
844 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
845
846         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
847         explicitly, this seems to be required by some gcc versions at -O2.
848
849         * mini-arm.c: Ditto.
850
851 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
852
853         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
854         has_target delegate invokes.
855
856 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
857
858         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
859         info fields.
860
861         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
862         add patches/unwind info arguments, move to mini.c.
863
864         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
865
866 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
867
868         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
869         command which returns full path names.
870
871 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
872
873         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
874         code_size output variable.
875
876         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
877         mono_get_lmf_addr.
878         
879 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
880
881         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
882         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
883         (mono_arch_cpu_enumerate_simd_versions): Ditto.
884
885 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
886
887         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
888         apple assembler.
889
890 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
891
892         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
893
894 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
895
896         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
897
898 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
899
900         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
901
902 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
903
904         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
905         line number support works with eglib.
906
907 2010-04-27  Miguel de Icaza  <miguel@novell.com>
908
909         * driver.c, mini.c: Since linking with LLVM makes the default Mono
910         dirty an extra 70kb pages on startup we are now going to choose a
911         different strategy: ship mono and mono-llvm binaries, with the
912         second being the one that links with LLVM and defaults to LLVM
913         being enabled.
914
915 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
916
917         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
918         Implement full-aot support on x86.
919
920         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
921         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
922         the first register returned by get_global_int_regs ().
923
924         * cpu-x86.md: Fix the length of insertx_u1_slow.
925
926         * iltests.il.in: Disable tail call tests when running with full-aot.
927
928 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
929
930         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
931
932 2010-04-24  Mark Probst  <mark.probst@gmail.com>
933
934         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
935         in the initializer, because it's non-constant.
936
937 2010-04-23  Miguel de Icaza  <miguel@novell.com>
938
939         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
940         of LLVM on by default.   Used for buildbots and other setups.
941
942 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
943
944         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
945
946 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
947
948         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
949         initonly static fields when using moving GC.
950
951         Contributed under MIT/X11 license.
952
953 2010-04-23  Geoff Norton  <gnorton@novell.com>
954
955         * mini-amd64.h: Darwin x86_64 support.
956
957 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
958
959         * exceptions-arm.c: Remove platform checks in favor of configure checks.
960
961 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
962
963         * exceptions-arm.c: Add Android support for sigcontext structure.
964
965 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
966
967         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
968         wrappers correctly now that their wrapper info is NULL.
969
970 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
971
972         * mini.c (mono_jit_compile_method_inner): Avoid calling
973         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
974
975 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
976
977         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
978         so the latter can be #ifndef DISABLE_JIT-ed.
979
980         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
981
982 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
983
984         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
985
986 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
987
988         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
989         stack.
990
991 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
992
993         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
994         calling mono_class_num_methods (). Fixes #592244.
995
996 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
997
998         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
999
1000         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1001
1002 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1005         version.
1006         * (handle_alloc): Ditto.
1007         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1008         change, its not needed anymore.
1009
1010 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1011
1012         * mini-posix.c (sigusr1_signal_handler): Fix build on
1013         non x86/amd64 systems.
1014
1015 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1016
1017         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1018         calls where the constrained class needs a context. Fixes #595863.
1019
1020         * iltests.il.in: Add a test.
1021
1022 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1023
1024         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1025         2.6/SVN seems to have broken support for them.
1026
1027 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * mini-llvm.c: Fix support for LLVM 2.6.
1030
1031 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1034         MonoInternalThread belonging to the thread.
1035
1036 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1037
1038         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1039         unsafe optimization that will remove bound checks.
1040
1041 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1042
1043         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1044         CompareExchange not to be inlined for I8.
1045
1046         Contributed under MIT/X11 license.
1047
1048 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1049
1050         * array.cs: Add tests for cast between primitive array types.
1051
1052 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1053
1054         * Makefile.am: create a convenience library for moon to link with
1055
1056 2010-04-07 Paolo Molaro <lupus@ximian.com>
1057
1058         * method-to-ir.c: optimize array accesses from generic interfaces.
1059
1060 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1061
1062         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1063
1064 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1065
1066         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1067         of marshalbyref classes.
1068
1069         Fixes #515884.
1070
1071 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1072
1073         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1074         information.
1075
1076         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1077         information.
1078
1079         * mini.h: Increase AOT version.
1080
1081 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1082
1083         * mini-x86.h: Only enable soft debugger when using sigaction or on
1084         Windows. Fixes build on Haiku (lacks siginfo_t).
1085
1086         Code is contributed under MIT/X11 license.
1087
1088 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1089
1090         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1091         BeOS-style signal handlers.
1092
1093         Code is contributed under MIT/X11 license.
1094         
1095 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1098
1099 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1100
1101         * mini-exceptions.c: Fix win32 build.
1102
1103 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1104
1105         * mini.c, driver.c: Call mono_gc_base_init() before
1106         mono_debug_init().
1107
1108 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1109
1110         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1111         call_method]): Delegate the actual work in security-core-clr.c
1112         to ease code sharing.
1113
1114 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1117         float conv.ovf.un opcodes are encountered, instead of asserting later.
1118         Fixes #566296.
1119
1120 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1121
1122         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1123
1124         * iltests.il.in: Add a test.
1125
1126 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1129         large. Fixes #567040.
1130
1131         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1132
1133 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1134
1135         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1136         #592711.
1137
1138 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1139
1140         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1141         mono_create_handler_block_trampoline with the proper #ifdef so that it
1142         compiles on amd64.
1143
1144 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1145
1146         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1147         allows to select if it's new or old context that is passed to 
1148         the callback.
1149
1150         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1151         case when executing a guarded handler from the EH machinery.
1152
1153         * mini-exceptions.c (mono_install_handler_block_guard): New function
1154         responsible for checking for handler blocks, installing the guard and
1155         clearing abort state.
1156
1157         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1158         to check for handler blocks and skip interruption logic if one was found.
1159
1160         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1161         by the handler block guard trampoline. Resumes interruption by raising the
1162         pending ThreadAbortException.
1163
1164         * mini.c (create_jit_info): Calculate the end address of a finally block.
1165
1166         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1167         of a finally block to a specified address and return the old one.
1168
1169         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1170         trampoline patches the original return address and calls the trampoline function.
1171
1172 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1175
1176         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1177         does the patching if the callee is in the same domain.
1178
1179         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1180         of mono_arch_patch_plt_entry ().
1181
1182 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1183
1184         * mini.c (create_jit_info): Fix try block hole length encoding.
1185
1186 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1189         duplicate information and print offsets instead of absolute addresses.
1190
1191 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1194         event is sent. Fixes #591733.
1195
1196 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1199         OpenBSD.
1200
1201 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1204         thread_to_tls hash table.
1205
1206         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1207         section. Fixes #591000.
1208
1209 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1210
1211         * Makefile.am (version.h): Check for pure .git directory only,
1212         fixes SVN revision when using git without git-svn.
1213
1214         Contributed under MIT/X11 license.
1215
1216 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1217
1218         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1219
1220 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1221
1222         * basic-simd.cs: Test for vector x scalar binary operators.
1223
1224 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1227         intrinsics with expanded scalar arguments.
1228
1229 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1230
1231         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1232         don't have an exception class, so don't decode it. This would crash
1233         with filter clauses.
1234
1235 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1236
1237         Make sure that trunk builds with DISABLE_JIT, an update to the
1238         PlayStation 3 port.
1239         
1240         * mini.c (mini_get_shared_method): this code seems to be necessary
1241         regardless of whether DISABLE_JIT has been defined.
1242
1243         (mono_jit_compile_method_inner): it seems that this method is
1244         required even in full AOT mode, so ifdef out only the pieces that
1245         try to genrate code (the body of code that applies patches to the
1246         code).  
1247
1248         (mini_method_compile): do not compile when using DISABLE_JIT.
1249
1250         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1251         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1252         compile when DISABLE_JIT is set.
1253
1254 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1255
1256         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1257         arch really supports it.
1258
1259 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1260
1261         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1262
1263 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1264
1265         * exceptions-s390x.c: Add support for
1266         mono_arch_get_throw_corlib_exception and fix throw by name.
1267
1268         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1269         logic (especially for varargs); Correct localloc sizing; Add
1270         mono_arch_get_this_arg_from_call and
1271         mono_arch_get_this_arg_from_call.
1272
1273         * mini-s390x.h: Add support for facility list extraction;
1274         Correct/update MONO_ARCH_xxx settings.
1275
1276         * mini-s390.c: Minor corrections to instruction output for
1277         varargs. No IMT implementation - I think it's time to deprecate
1278         s390 and just leave s390x.
1279
1280         * tramp-s390x.c: Correct creation of trampoline instruction
1281
1282
1283         * cpu-s390x.md: Update some instruction lengths
1284
1285 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1288         can be hit with partial sharing.
1289
1290         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1291         in non-shared classes correctly.
1292         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1293         Turn on partial sharing.
1294
1295 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1296
1297         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1298         by mistake.
1299
1300 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1301
1302         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1303         mono_method_signature ().
1304
1305         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1306
1307         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1308         error checking, so later calls do not need error checking.
1309
1310 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1313
1314         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1315
1316 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1317
1318         * mini-exceptions.c (mono_handle_exception_internal): Don't
1319         check try_end for archs different than s390. 
1320
1321         * mini.c (create_jit_info): Don't crash if the finallt block is the
1322         last one.
1323
1324 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1325
1326         * driver.c (mono_main): Don't free global codeman under linux since
1327         glic now peeks at code on stack for more archs than just amd64.
1328
1329 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1330
1331         * mini.c, method-to-ir.c: changes to support compressed interface
1332         bitmaps.
1333
1334 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1337         Use sigaction on OpenBSD too.
1338
1339 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1340
1341         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1342
1343 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1344
1345         * debugger-agent.c: #include sys/select.h for fd_set.
1346
1347         Code is contributed under MIT/X11 license.
1348
1349 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1350
1351         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1352         (openbsd+amd64 ?).
1353
1354 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1357         some large methods with lots of exception handlers. Fixes #440924.
1358
1359 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1360
1361         * method-to-ir.c: remove code duplication for interface checks.
1362
1363 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1364
1365         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1366         (assembly_unload): Clear all event requests referencing the to-be unloaded
1367         assembly.
1368
1369
1370 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1371
1372         * mini.h, mini-exceptions.c: restore the state of the stack
1373         guard page permissions.
1374
1375 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1376
1377         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1378         call site patching code, it doesn't appear to be needed.
1379
1380 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1381
1382         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1383         sharing generic methods whose type arguments are a mix of reference and
1384         non-reference types. Not yet turned on.
1385
1386         * mini.c (mini_get_shared_method): New helper function to return
1387         the method which will be compiled/registered in the JIT tables when doing
1388         generic sharing.
1389         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1390         use mini_get_shared_method ().
1391
1392         * mini.c (mini_method_compile): Register the same method which is compiled when
1393         doing generic sharing.
1394
1395         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1396
1397         * generics.cs: Add partial sharing tests.
1398
1399 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1400
1401         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1402                    Add an enum value that or's all possable values together. Add an enum value
1403                    that marks the end of the used bit indexes.
1404
1405         * mini-amd64.c : Make changes to match the changes in mini.h 
1406
1407         * mini-x86.c : Make changes to match the changes in mini.h
1408
1409         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1410                    simd_version to support more simd versions. Changed the name of
1411                    simd_version to simd_version_flags to make it more intuitive that
1412                    it now contains bit flags. Reordered the *_intrinsics arrays to
1413                    match the changes above. Changed emit_intrinsics() to use the new
1414                    setup mentioned above.
1415
1416         Code is contributed under MIT/X11 license.
1417
1418 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1419
1420         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1421         remaining archs. Alpha and hppa maintainers, please stand up.
1422
1423 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1424
1425         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1426         is needed even when fail_tramp!=NULL.
1427
1428 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * debugger-agent.c (insert_breakpoint): Write a log message.
1431
1432 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1433
1434         * iltests.il.in: Add a few tests for LEAVE going over multiple
1435         finally clauses.
1436
1437 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1438
1439          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1440
1441 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1442
1443         * mini.h (MonoBasicBlock): Add native_length field.
1444         * mini.h (MonoCompile): Add try_block_holes field.
1445         * mini.h (MonoInst): Add exception_clause pointer to
1446         the data union.
1447
1448         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1449         * mini.c (mono_cfg_add_try_hole): New function to register possible
1450         holes in try blocks.
1451         * mini.c (create_jit_info): Fill in the holes information.
1452
1453         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1454         by a try block.
1455
1456         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1457
1458 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1459
1460         * jit-icalls.c: adjusted for the array API changes.
1461
1462 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1463
1464         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1465
1466 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1469         the 'pending' flag. This fixes support for appdomains too.
1470
1471
1472 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1473
1474         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1475
1476 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1477
1478         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1479         when using LLVM, LLVM generates it itself when needed.
1480
1481         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1482
1483         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1484         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1485         OP_ANDNPS/OP_ANDNPD.
1486
1487 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1490         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1491         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1492
1493 2010-03-11  Martin Baulig  <martin@ximian.com>
1494
1495         * debugger-agent.c (type_commands): Add NULL check to
1496         `CMD_TYPE_GET_SOURCE_FILES'.
1497
1498 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1499
1500         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1501
1502 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1503
1504         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1505         #586664.
1506
1507         * iltests.il.in: Add a test.
1508
1509 2010-03-05  Martin Baulig  <martin@ximian.com>
1510
1511         Add support for aborting invocations.
1512
1513         * debugger-agent.c
1514         (InvokeData): Added `InvokeData *last_invoke'.
1515         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1516         added a new `invoke' field to keep the `InvokeData *' throughout
1517         the invocation.
1518         (ErrorCode): Added `ERR_NO_INVOCATION'.
1519         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1520         (mono_debugger_agent_handle_exception): Don't report any exception
1521         if an abort was requested.
1522         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1523         a thread abort if necessary.
1524         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1525
1526 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1527
1528         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1529         so we can release the whole list and not just the first one. Free
1530         it in more places as well.
1531
1532 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1533
1534         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1535
1536 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1537
1538         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1539
1540 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1541
1542         * driver.c: report also other misc build options.
1543
1544 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1545
1546         * method-to-ir.c: Generate better code for the NewObject
1547         intrinsic.
1548         
1549 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1550
1551         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1552         is disabled. Fixes #582322.
1553
1554         * iltests.il.in: Add a test.
1555
1556 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1557
1558         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1559         the handling of obj->synchronization == null and owner != current thread to
1560         mono_monitor_exit ().
1561
1562         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1563
1564
1565 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1566
1567         * mini.c: change the way emulated opcode info is stored and save about
1568         4 KB of runtime memory.
1569
1570 2010-03-04  David S. Miller  <davem@davemloft.net>
1571
1572        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1573        that don't provide the siginfo in the second signal handler argument
1574        are buggy, and this has been fixed for years.
1575        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1576        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1577
1578 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * aot-runtime.c (find_symbol): Fix a leak.
1581         (decode_patch): Ditto.
1582
1583 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1586
1587 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1588
1589         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1590
1591 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1592
1593         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1594
1595 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1596
1597         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1598         to check for errors, it's enough to create the metadata open.
1599
1600         Fixes #562150
1601
1602 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1603
1604         * trace.c|h:
1605         * mini-exceptions.c: Add support for printing stack traces when handling
1606         exceptions, and when printing exceptions thrown while tracing also print
1607         the exception message.
1608
1609 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1610
1611         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1612         since the exclude token is a valid string character.
1613
1614 2010-03-02  Levi Bard  <levi@unity3d.com>
1615
1616         * debugger-agent.c: Invalidate thread stacks on domain unload.
1617
1618 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1619
1620         * method-to-ir.c: Emit dummy_use for stored reference after write
1621         barriers to make sure the object is pinned if the GC interrupts
1622         before the write barrier is done.
1623
1624 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1625
1626         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1627
1628 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1629
1630         * debugger-agent.c: Add a log message printing the protocol version.
1631
1632 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1633
1634         * debugger-agent.c: Add a new command to communicate the protocol version used
1635         by the client. This could be used to allow newer runtimes to communicate with
1636         older clients.
1637
1638 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1639
1640         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1641
1642 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1645         type.
1646
1647 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1648
1649         * mini-arm.c: make the arm cpu arch configurable with the
1650         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1651         Bug #584198.
1652
1653 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1654
1655         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1656         support for the perf tool on Linux.
1657
1658 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1659
1660         * method-to-ir.c: make string.InsertenalSetChar() specialization
1661         effective.
1662
1663 2010-03-01  Robert Jordan  <robertj@gmx.net>
1664
1665         * Makefile.am: fix the non-static build.
1666
1667 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1668
1669         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1670         here.
1671
1672 2010-02-26  Robert Jordan  <robertj@gmx.net>
1673
1674         * tasklets.c (continuation_store): Return from an error condition
1675         immediately.
1676
1677 2010-02-26  Martin Baulig  <martin@ximian.com>
1678
1679         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1680
1681         * debug-mini.c
1682         (MonoDebuggerThreadInfo): Added `internal_flags'.
1683         (MonoDebuggerInternalThreadFlags): New enum.
1684         (_mono_debugger_throw_exception): Don't signal the debugger if a
1685         type abort was requested.
1686         (_mono_debugger_unhandled_exception): Likewise.
1687         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1688         (mono_debugger_runtime_invoke): If the debugger requested a thread
1689         abort during the invocation, reset it here.
1690
1691 2010-02-26  Martin Baulig  <martin@ximian.com>
1692
1693         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1694         instead of `MonoThread *'.
1695
1696 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1699         code offsets table, as it is mostly sorted.
1700
1701 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1702
1703         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1704         Fixes #582991.
1705
1706 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1707
1708         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1709
1710 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1711
1712         * Makefile.am: build the new ABI version of the libmono library.
1713         * debugger-agent.c, mini.c: fix warnings with the new API.
1714         * jit.h: don't depend on glib.h being included.
1715
1716 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1717
1718         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1719
1720 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1723         ThreadStatic variables.
1724
1725 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1728         data is not freed yet. Fixes #582460.
1729
1730 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1731
1732         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1733         event requests. Bump protocol minor version.
1734
1735 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1736
1737         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1738
1739 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1742         #581950.
1743
1744         * iltests.il.in: Add a test.
1745
1746 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1747
1748         * mini.c (inline_method): Check for loader errors.
1749
1750 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1751
1752         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1753         instead of mono_method_get_header as it doesn't decode locals
1754         so the called method can have unresolved dependencies that will only
1755         be satisfied after the current method is JIT'd.
1756
1757         Fixes #550968.
1758
1759 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * basic.cs (test_0_div_opt): Speed this up a bit.
1762
1763 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1766
1767         * mini.c (mono_jit_create_remoting_trampoline): Call
1768         mono_create_specific_trampoline () instead of
1769         mono_arch_create_specific_trampoline ().
1770
1771         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1772
1773 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1776         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1777
1778         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1779
1780         * mini-amd64.c: Fix DISABLE_JIT support.
1781
1782 2010-02-20  Geoff Norton  <gnorton@novell.com>
1783
1784         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1785
1786 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1787
1788         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1789         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1790         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1791         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1792         handle_exception.
1793
1794 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1795
1796         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1797         edx/ecx too. This is needed to support OP_SEQ_POINT.
1798
1799 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1800
1801         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1802
1803         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1804
1805 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1808         LLVM+AOT+exceptions, not enabled yet.
1809
1810 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1811
1812         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1813
1814 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1815
1816         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1817         xdebug info for these.
1818
1819         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1820         in a few places.
1821
1822         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1823         not used yet.
1824
1825 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1828
1829 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1830
1831         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1832         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1833
1834         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1835         for mtouch.
1836
1837 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1838
1839         * debugger-agent.c: handle incomplete reads and EINTR in
1840         recv()/send(). This could have been causing random
1841         disconnections.
1842
1843 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1846         points.
1847
1848         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1849         so they have small offsets. Fixes #566311.
1850
1851 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1852
1853         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1854
1855 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1856
1857         * mini-amd64.c: Remove the special casing of byref in a few places now that
1858         mini_type_get_underlying_type () handles it.
1859
1860         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1861         by returning native int. Fixes #577984.
1862
1863 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1866         a macro.
1867
1868         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1869         of putting the clause itself.
1870
1871         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1872
1873 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1874
1875         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1876         might be unaligned.
1877
1878 2010-02-10  Geoff Norton  <gnorton@novell.com>
1879
1880         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1881
1882 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1883
1884         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1885         llvm methods too.
1886
1887         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1888         it is not an LLVM generated symbol.
1889
1890         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1891
1892         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1893         implementation in gshared mode because it causes regressions.
1894
1895         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1896
1897         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1898         should be done by the caller.
1899
1900         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1901
1902         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1903
1904         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1905         since mono_jit_info_table_find () doesn't do it anymore.
1906
1907         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1908         instead of mono_jit_info_table_find ().
1909
1910 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1913
1914         * aot-compiler.c (encode_method_ref): Update after the removal of
1915         mono_gc_get_managed_allocator_type ().
1916
1917         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1918         Fixes #564538.
1919
1920 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1921
1922         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1923         generic params as well.
1924         (handle_isinst): Ditto.
1925
1926         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1927         instead of always calling an icall.
1928
1929         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1930         computing the size of the got.
1931
1932         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1933         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1934         the assembly directive '.set' so it points to the first LLVM emitted method.
1935
1936 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1937
1938         * mini.c (mini_method_verify): Report the method which failed to verify.
1939
1940 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1941
1942         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1943         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1944         runtime MS verifier.
1945
1946 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1947
1948         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1949         #561962.
1950
1951 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * mini-llvm.c: Init the jit module only when first JITting.
1954
1955         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1956
1957         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1958
1959         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1960         replaced with the real got.
1961
1962         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1963
1964         * image-writer.c: Reduce the amount of #ifdefs a bit.
1965
1966         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1967         llvm on darwin/arm.
1968
1969         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1970
1971         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1972         global.
1973
1974 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1977         (mono_llvm_emit_method): Fix unaligned stores too.
1978
1979         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1980         so async stack walks don't crash.
1981
1982 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1983
1984         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1985         was not patched if the callee needed an rgctx trampoline.
1986
1987 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1990         vtable address in AOT code.
1991
1992 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1993
1994         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1995         MonoInst's.
1996
1997 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1998
1999         * genmdesc.pl: remove dependency on external cpp.
2000
2001 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2004         using LLVM, its not needed, and abcrem can't handle it.
2005
2006 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2007
2008         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2009         it easier to group instructions and reduce duplication.
2010
2011 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2012
2013         * decompose.c: Move the array/soft float decompose routines here from
2014         method-to-ir.c.
2015
2016         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2017
2018 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2019
2020         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2021         to tell LLVM that the got is constant, not used yet.
2022
2023         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2024
2025 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2026
2027         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2028         managed wrappers.
2029
2030 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2031
2032         * aot-compiler.c (add_wrappers): Commit the hack which generates
2033         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2034         custom attribute.
2035
2036 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2039         a fault, only used by the LLVM backend.
2040
2041         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2042         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2043
2044         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2045         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2046
2047         * mini-llvm.c: Only generate volatile loads from load instructions which have
2048         the MONO_INST_FAULT flag set.
2049
2050 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2053         64 bit platforms.
2054
2055 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2056
2057         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2058         sequence points. Fixes #571236.
2059
2060 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2061
2062         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2063         end of the appdomain unload process, after assemblies have been unloaded.
2064         Fixes #574842.
2065
2066 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2069         works.
2070
2071         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2072         Fixes #573988.
2073
2074 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2077
2078 2010-01-26  Geoff Norton  <gnorton@novell.com>
2079
2080         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2081         with struct marshalability.
2082
2083 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2084
2085         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2086         it supports class names as well.
2087
2088         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2089         needed by the GC map code.
2090
2091         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2092         flags if needed.
2093
2094         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2095         if cfg->init_ref_vars is set.
2096
2097         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2098         cfg->disable_initlocals_op_refs is set.
2099
2100         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2101         using liveness info if cfg->compute_precise_live_ranges is set.
2102
2103         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2104         volatile variables correctly. Add comments about the live ranges. Not enabled
2105         yet.
2106
2107 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2108
2109         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2110         0x2a into them in method prologs.
2111
2112         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2113
2114 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2115
2116         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2117         classes, since llvm is compiled with -fno-rtti.
2118
2119         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2120
2121         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2122         llvm does not require it.
2123
2124         * aot-runtime.c (load_method): Print the full name of the last aot method.
2125
2126 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2127
2128         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2129         thread has not fully started yet.
2130
2131 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2132
2133         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2134
2135 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2136
2137         * driver.c: Do not abort if LLVM is not supported, print a
2138         warning and add the information to the Mono JIT information.
2139
2140 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2141
2142         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2143         using explicit null checks.
2144
2145 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2146
2147         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2148         related code.
2149
2150         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2151         () in one place.
2152         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2153         its no longer needed.
2154
2155         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2156
2157         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2158         define for platforms still using it (s390). Get rid of the
2159         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2160
2161         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2162         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2163
2164         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2165         the caller pushed the arguments.
2166
2167         * mini-llvm.c: Enable throwing exceptions on x86.
2168
2169         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2170         "Thread (nil) may have been prematurely finalized" messages if this is called
2171         on a thread not registered with the runtime.
2172
2173         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2174
2175 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * jit-icalls.c (mono_array_new_3): New jit icall.
2178
2179         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2180
2181         * arrays.cs: Add a test for 3 dimensional arrays.
2182
2183 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2184
2185         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2186         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2187         used.
2188
2189         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2190         thrown on x86.
2191
2192         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2193
2194         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2195
2196         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2197
2198 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2199
2200         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2201           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2202
2203         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2204
2205         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2206
2207         Code is contributed under MIT/X11 license.
2208
2209 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2210
2211         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2212
2213         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2214
2215         * mini.c (mini_method_compile): Set the new flag when running under the
2216         debugger.
2217
2218 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2219
2220         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2221         a ref/noref value + a global pin flag, so parts of stack frames can still be
2222         precisely marked even if they include stuff which needs pinning. Improve logging.
2223         Fix many bugs. Not enabled yet.
2224
2225         * gc-test.cs: Add a few tests.
2226
2227         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2228         the normal -v options. Avoid propagating liveness information through bblocks
2229         which end with a NOT_REACHED opcode.
2230
2231         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2232         after cfg has been freed.
2233
2234 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2235
2236         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2237         if a clause is skipped because it uses the exception object, since it could
2238         have caught the exception.
2239
2240         * exceptions.cs: Add a test.
2241
2242 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2243
2244        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2245
2246         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2247         ICollection<T> wrappers.
2248
2249 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2250
2251         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2252
2253 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2256         NOMAP32BIT or optimize_for_xen is set.
2257
2258 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2261         mono_metadata_str_hash () instead.
2262
2263 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2266         sizeof (void*).
2267
2268         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2269
2270 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2271
2272         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2273         flag is set.
2274
2275         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2276         throwing code correctly.
2277
2278         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2279
2280 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2283         ftnptrs created by us, handle RGCTX_FETCH correctly.
2284         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2285
2286         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2287         ftnptr added by mono_aot_get_named_code ().
2288
2289 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * mini-arm.c: Fix a few LLVM problems.
2292
2293         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2294
2295 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2296
2297         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2298         AOT compiling.
2299
2300 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2301
2302         * jit.h, method-to-ir.c: added ability to set the policy for
2303         inserting breakpoints from the break IL instruction or the
2304         Debugger.Break () API call.
2305
2306 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2309         assemblies need to be eagerly loaded.
2310
2311 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2314
2315 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2316
2317         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2318         an argument which matches any exception.
2319
2320 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2321
2322         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2323         optimization if the called method is gshared and marshalbyref, since gshared
2324         methods can' have wrappers. Fixes #569390.
2325
2326         * generics.cs: Add a test.
2327
2328 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2329
2330         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2331         callable from gdb.
2332
2333 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2336
2337 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2340         since it is not supported in win2000.
2341
2342 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2345         error if loading an assembly fails.
2346         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2347
2348         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2349         if exists.
2350
2351         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2352         compiled methods.
2353
2354         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2355
2356         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2357         is not supported yet.
2358
2359         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2360
2361 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2362
2363         * method-to-ir.c: All types with variant arguments must fallback to the
2364         slow path. This makes cast of variant delegates work.
2365
2366         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2367         argument that is set to TRUE is the returned vtable slot is for a variant
2368         interface. Changed a g_print + g_assert_not_reached to a g_error.
2369
2370         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2371         a similar fashion of generic virtual methods.
2372
2373 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2374
2375         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2376         when cfg is null.
2377
2378         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2379         method using a variance aware function.
2380
2381         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2382
2383 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2384
2385         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2386         do an icall for now.
2387
2388 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2389
2390         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2391         If LLVM decides to set the code model to Large, reset it to Default.
2392
2393 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2396         stripped binaries as well.
2397
2398 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2399
2400         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2401         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2402
2403         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2404         reg.
2405
2406 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2409         separate function.
2410
2411         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2412         as the type info to llvm.eh.selector.
2413         (exception_cb): Use the type info for filling out some fields of
2414         MonoJitExceptionInfo like the flags and the exception class. This is needed
2415         because the LLVM produced exception handling clauses might not match the original
2416         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2417
2418         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2419         separate function. Add an extra argument which returns the type infos
2420         corresponding to the exception clauses.
2421
2422         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2423         exception handling clauses.
2424
2425 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2428         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2429         to fix an AOT case.
2430
2431 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2432
2433         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2434         internal assembly.
2435
2436 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2439         llvm code.
2440
2441 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2442
2443         * mini.c (mini_method_compile): Verify the method before calling
2444         mono_compile_create_vars as this might crash since it uses method
2445         information.
2446
2447         Fixes #560196.
2448
2449 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2450
2451         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2452         one case if AOTing, since the class might not be a concrete class.
2453
2454 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2455
2456         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2457         functions which are now defined in mempool-internals.h.
2458
2459         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2460
2461         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2462
2463 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2464
2465         * mini.c:
2466         * method-to.ir.c:
2467         * mini-*.c: Properly handle generic enums.
2468
2469         Fixes #566294
2470
2471 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2474         in a few more places.
2475
2476 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2477
2478         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2479         nullable parameters. Fixes #567351.
2480
2481 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2482
2483         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2484
2485 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2486
2487         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2488         mono_get_generic_context_from_code () call.
2489
2490         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2491
2492 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2493
2494         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2495         needed.
2496
2497 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2498
2499         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2500         mono_method_get_signature returns NULL. Fix #567084
2501
2502 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2503
2504         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2505         instead of once for each module.
2506
2507 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2508
2509         * debugger-agent.c (ss_start): Implement step over for the last sequence
2510         point in methods.
2511
2512         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2513         have the STEP_LOC flag set.
2514
2515         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2516         fails. Fixes #566689.
2517
2518 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * mini.c (mono_add_seq_point): New helper function.
2521         (mono_save_seq_point_info): New function to save sequence point info, extracted
2522         from mini_method_compile ().
2523
2524         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2525
2526         * mini.h (MonoSeqPointInfo): New structure containing information about
2527         the sequence points of a JITted method.
2528         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2529         'bucket' field.
2530
2531         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2532         point information is stored, use a MonoSeqPointInfo structure instead of a
2533         GPtrArray. For each seq point, compute a list of successor seq points.
2534
2535         * debugger-agent.c: Use the successor list to implement step-over more
2536         efficiently: instead of single stepping until a different line/IL offset is
2537         reached, place breakpoints into all successor seq points.
2538
2539         * mini.h: Bump AOT file format version.
2540
2541 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2544
2545         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2546
2547 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2550         build.
2551
2552 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2555         alloca as g_malloc is not signal safe.
2556
2557 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2558
2559         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2560         VALGRIND_DISCARD_TRANSLATIONS.
2561
2562         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2563         checks, they are no longer needed.
2564
2565         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2566         a function into a sigctx which can handle function pointers.
2567
2568         * mini-ppc.c: Implement soft debugger support on ppc64.
2569
2570         * mini-ppc.c: Implement soft debugger support.
2571
2572 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2575
2576 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2577
2578         * mini.c (mono_get_runtime_build_info): include Mono version in
2579         the returned value.
2580
2581         * driver.c (mono_main): VERSION is now included in the string
2582         returned from mono_get_runtime_build_info()
2583
2584 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2587         signatures. Fixes #565143.
2588
2589         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2590
2591 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2592
2593         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2594
2595 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2596
2597         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2598         making max stack 10x smaller.
2599
2600 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2603
2604 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2605
2606         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2607
2608 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2609
2610         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2611         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2612
2613         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2614
2615         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2616
2617         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2618
2619         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2620         the compilation.
2621
2622 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2623
2624         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2625         raise an invalid program exception.   
2626
2627         For other opcodes that we might not handle use a g_warning and
2628         raise the exception.   Beats termination.
2629
2630         Fixes #561724
2631
2632 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2633
2634         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2635
2636         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2637         by merging the LLVM and !MAP_32BIT cases.
2638
2639 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2640
2641         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2642         sigctx being passed in, as we have no CONTEXT available in the APC.
2643
2644         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2645         for now.
2646
2647         Code contributed under MIT/X11 license.
2648
2649 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2650
2651         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2652         in the LLVM backend on AMD64.
2653
2654         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2655         FDE.
2656
2657         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2658
2659         * mini-llvm.c: Export mono_personality for AOT.
2660
2661         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2662
2663         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2664         implicit exception can occur.
2665
2666         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2667         OP_IMPLICIT_EXCEPTION instruction.
2668
2669         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2670
2671         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2672
2673         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2674         inside a protected block.
2675
2676         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2677         trampolines doesn't include the argument.
2678
2679         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2680         trampolines on amd64.
2681
2682         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2683         of RDI.
2684
2685         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2686         disabled for methods with clauses.
2687
2688         * mini-llvm.c: Enable support for catch clauses.
2689
2690         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2691         end of an LLVM compiled finally clause.
2692         (mono_handle_exception_internal): Save the exception handling state in TLS
2693         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2694         resume unwinding from that point.
2695
2696         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2697         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2698         to obtain the addresses of the exception handling regions.
2699
2700         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2701         finally clauses are supported.
2702
2703         * mini.c (mini_method_compile): Add support for LLVM code with exception
2704         handlers.
2705
2706 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2709         proper size.
2710
2711 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2712
2713         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2714         as a primitive type.
2715
2716 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2717
2718         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2719         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2720         #564000.
2721
2722 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2723
2724         * method-to-ir.c (mini_redirect_call): do not redirect the
2725         InternalAllocateStr internal call if string profiling is enabled.
2726
2727 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2728
2729         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2730         generic methods.
2731
2732         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2733         unwind.h header file.
2734
2735         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2736         newer valgrind versions seems to handle this fine.
2737
2738 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2741         on the debugger thread.
2742
2743 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2746
2747         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2748
2749         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2750
2751         * cpu-<ARCH>.md: Make call_handler clob:c.
2752
2753         * mini.c: Reenable SSA for methods with clauses.
2754
2755         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2756         as it causes failures on x86.
2757
2758 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2759
2760         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2761         returns NULL (e.g. a bad assembly).
2762
2763 2009-12-08  Geoff Norton  <gnorton@novell.com>
2764
2765         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2766         stepping out into native code.  There were issues with nested invokes
2767         like .cctors.
2768
2769 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * mini.c (mini_method_compile): Do the disable_llvm checks early
2772         and avoid the LLVM compile pass if the checks fail.
2773
2774         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2775
2776         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2777         LLVM optimizations don't try to remove them.
2778
2779         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2780         different file so the original remains.
2781
2782 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2783
2784         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2785
2786         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2787
2788         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2789         support for non-inline unwind descriptors.
2790
2791 2009-12-07  Geoff Norton  <gnorton@novell.com>
2792
2793         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2794         the interrupt_count slightly differently.  Native threads were never
2795         marked as resumed.
2796
2797 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2798
2799         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2800         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2801         yet generate this info.
2802
2803         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2804
2805         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2806         client can distinguish between intptrs and longs.
2807
2808 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2809
2810         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2811         blob.
2812
2813         * aot-runtime.c (load_function): Update after the change above.
2814
2815         * mini.h: Bump AOT file format version.
2816
2817         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2818         if the delegate class is dynamic.
2819
2820         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2821         in gshared code too using the new rgctx info type
2822         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2823
2824 2009-12-04  Geoff Norton  <gnorton@novell.com>
2825
2826         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2827         we need to track the original suspend count so the thread properly
2828         wakes up in resume_thread.
2829
2830 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2833         code.
2834
2835         * generics.cs: Add a test.
2836
2837         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2838         is 0. Simplify a lot of code using this.
2839
2840         * mini-trampolines.c (mono_delegate_trampoline): Call
2841         mono_create_static_rgctx_trampoline () before saving the final address in
2842         delegate->method_code, to avoid calling it each time a delegate is first called.
2843
2844         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2845         which need static rgctx trampolines.
2846
2847         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2848         keyed on the method+addr pair, since addr could be either the method addr or
2849         an unbox trampoline in the AOT case. Fixes #560246.
2850
2851 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2852
2853         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2854         place it was called before too.
2855
2856 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2859         if no security manager is present, to speed up the AOT case. Call
2860         mono_class_vtable () full with raise_on_error == TRUE instead.
2861
2862 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2863
2864         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2865         the local optimization passes can take its result into account. Fixes
2866         #559876.
2867
2868         * exceptions.cs: Add a test.
2869
2870 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2871
2872         This patch is contributed under the terms of the MIT/X11 license
2873
2874         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2875
2876 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2879
2880         * debugger-agent.c: Rework the handling of stack traces of running threads to
2881         avoid crashes if compute_frames () tries to walk the stack of running thread.
2882
2883         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2884
2885         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2886
2887         * mini.h (StackFrameInfo): Add an 'lmf' field.
2888
2889 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2890
2891         * debugger-agent.c (suspend_current): Always set really_suspended.
2892
2893         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2894
2895         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2896
2897 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2900         really suspended.
2901
2902 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2903
2904         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2905
2906 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2907
2908         * mini-trampolines.c: Fix MSVC build.
2909
2910 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2911
2912         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2913
2914 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2917         the instruction following an OP_FCOMPARE is optimized away.
2918
2919 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2920
2921         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2922         emit_autoreg () into this arch-specific function.
2923
2924         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2925         code, it is no longer needed.
2926
2927         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2928
2929         * mini.h: Bump AOT file format version.
2930
2931         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2932         using the sorted_code_offsets array, instead of reading it from the
2933         exception debug info.
2934         (load_method): Call mono_aot_find_jit_info instead of
2935         decode_exception_debug_info ().
2936
2937         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2938         LLVM compiled as a flag.
2939
2940 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * debugger-agent.c (resume_thread): Fix a warning.
2943
2944         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2945         generated.
2946
2947 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2948
2949         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2950         contents to MonoAotFileInfo.
2951
2952 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2953
2954         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2955         Put all binary data into a giant blob, similarly to the way .net assemblies
2956         store binary data. Emit offset tables in a compact form to reduce their size.
2957
2958         * mini.h: Bump AOT file format version.
2959
2960         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2961         places.
2962
2963         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2964         avoid linear searches at runtime.
2965
2966         * aot-runtime.c (find_symbol): Update this to use the hash.
2967
2968         * mini.h: Bump AOT file format version.
2969
2970 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2971
2972         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2973         container.
2974
2975         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2976         too.
2977
2978         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2979         the distribution of got slot types.
2980
2981         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2982
2983         * method-to-ir.c: Add support for generating explicit null checks.
2984
2985 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2986
2987         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2988         on a random thread if possible.
2989
2990         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2991         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2992         correctly.
2993
2994         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2995         regs. Pass the real size of the regs array to mono_unwind_frame ().
2996
2997         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2998         ones instead.
2999
3000 2009-11-24  Geoff Norton  <gnorton@novell.com>
3001
3002         * mini-darwin.c: Work around apple bug rdar://7209349  See
3003         http://openradar.appspot.com/7209349 for details.  Synopsis,
3004         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3005         never been initialized before.
3006
3007 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3008
3009         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3010
3011         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3012
3013 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3014
3015         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3016         OP_SHL_IMM is not 32 bit.
3017
3018 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3021
3022 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3023
3024         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3025         encountered.
3026
3027         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3028         > 0 since some threads can resume if their resume_count is > 0.
3029         (invoke_method): Avoid reading freed memory.
3030
3031         * debugger-agent.c (process_suspend): Extract the suspend code from
3032         process_single_step_inner () to a separate function. Rework the code to prevent
3033         races between this function and thread interrupts.
3034
3035         * debugger-agent.c (suspend_current): Check the resume_count field instead
3036         of resume_one so suspends+resumes during single threaded invokes work
3037         correctly.
3038
3039 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3042         to make the generated code smaller.
3043
3044         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3045         sequence generated by recent LLVM versions.
3046
3047         * mini-llvm.c: Add support for a few simple cases which weren't supported
3048         before.
3049
3050         * mini-trampolines.c (mono_magic_trampoline): Don't call
3051         mono_arch_get_vcall_slot () when llvm is enabled.
3052
3053         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3054
3055         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3056         into a new function called common_call_trampoline () which is used by the
3057         llvm vcall trampoline as well.
3058
3059         * debugger-agent.c: Implement single threaded invokes.
3060
3061         * debugger-agent.c: Revert change which broke the agent on linux.
3062
3063         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3064         #557606.
3065
3066         * generics.cs: Add a test.
3067
3068 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3069
3070         * debugger-agent.c: Fix the cygwin build.
3071
3072 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3073
3074         * cprop.c: Remove this unused file.
3075
3076 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3079         #557262.
3080
3081         * basic.cs: Add a test.
3082
3083 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3086         in one more place.
3087
3088 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3091         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3092         it. Use this flag to control llvm related code paths instead of #ifdef
3093         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3094         AOT code.
3095
3096         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3097
3098         * mini.h: Bump AOT file format version.
3099
3100         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3101         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3102
3103         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3104         was used as an assembly filter.
3105
3106 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3107
3108         * unwind.c: Fix support for ppc.
3109
3110         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3111         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3112
3113 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3114
3115         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3116         port.
3117         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3118         added by the ps3 changes.
3119
3120 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * mini-gc.c: Resurrect this, so at least it compiles.
3123
3124         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3125
3126 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3127
3128         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3129         create_event_list () so assembly filters can be used.
3130
3131         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3132         from the LMF.
3133
3134 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3135
3136         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3137         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3138         is disabled.
3139
3140         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3141         classes for char/bool too.
3142
3143         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3144
3145         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3146         used.
3147
3148         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3149         Fix warnings.
3150
3151 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3152
3153         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3154         
3155         Code contributed under MIT/X11 license.
3156
3157 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3158
3159         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3160         threads in native code work.
3161
3162         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3163         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3164         version.
3165
3166 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3167
3168         * debugger-agent.c: Implementation for Windows platform.
3169
3170         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3171         primitives. Use SEH to implement breakpoints and single stepping.
3172
3173         * mini-x86.h: Enable soft debugger on Windows.
3174
3175         Code contributed under MIT/X11 license.
3176
3177 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3178
3179         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3180         under XEN. Fixes #522894.
3181
3182         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3183
3184         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3185         interface calls in LLVM AOT code.
3186
3187         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3188         is found.
3189
3190         * mini-llvm.c: Add support for OP_VPHI.
3191
3192         * objects.cs: Add a test.
3193
3194 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3195
3196         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3197         this is called on the debugger thread.
3198
3199 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3200
3201         * mini-llvm.c: Add soft-float support.
3202
3203         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3204         FCALL which returns an R4.
3205
3206         * driver.c (mono_main): Add a missing '\n'.
3207
3208         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3209         platforms which doesn't support the LLVM IMT trampoline.
3210
3211 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3212
3213         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3214
3215         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3216
3217         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3218         virtual calls.
3219
3220         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3221
3222 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3223
3224         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3225         Instead of emitting a method_order table, sort the contents of the code_offsets
3226         table and do a binary search in the sorted table. The previous approach doesn't
3227         work with LLVM which emits methods in a arbitrary order.
3228
3229         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3230         in the .eh_frame section in ELF files.
3231
3232         * mini.h: Bump corlib file format version.
3233
3234         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3235
3236         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3237         LDMIA->LDM macro name change.
3238
3239 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3240
3241         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3242         x86.
3243
3244         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3245         SVN.
3246
3247         * aot-compiler.c: Ditto.
3248
3249         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3250         &align to mini_type_stack_size_full ().
3251
3252         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3253
3254         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3255
3256 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3257
3258         * mini-arm.c: Compute the stack space used by arguments using
3259         mini_type_stack_size_full ().
3260
3261 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3262
3263         * optflags-def.h: Remove dead TREEPROP optimization.
3264
3265 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3266
3267         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3268
3269         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3270
3271 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3272
3273         * driver.c (mono_jit_parse_options): New public API function to parse options
3274         as done by the runtime executable.
3275
3276         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3277         when handling named arguments.
3278
3279 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3280
3281         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3282         for passing small vtypes in registers, make the CallInfo structures more
3283         similar to the code on the other platforms.
3284
3285         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3286         the code in the prolog requires it.
3287
3288 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3291         (koush@koushikdutta.com).
3292
3293         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3294         where the thunk memory should be allocated from. Fixes appdomain unloading
3295         on arm.
3296
3297 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3298
3299         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3300         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3301
3302 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3303
3304         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3305         AOT, as it is not implemented yet.
3306
3307         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3308
3309 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3310
3311         * debugger-agent.c: Fix windows build.
3312
3313 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3316         after the client connects/disconnects.
3317
3318         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3319         when an exception of a given type is thrown.
3320
3321         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3322         only on an uncaught exception.
3323
3324         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3325
3326         * debugger-agent.c: Add a 'launch' option.
3327
3328 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3329
3330         * debugger-agent.c: Add a 'timeout' option.
3331
3332 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3333
3334         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3335         the JDWP agent.
3336
3337 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3338
3339         * debugger-agent.c (set_breakpoint): Emit a log message.
3340
3341 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3342
3343         * mini-arm.c: Fix the arm build.
3344
3345 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3346
3347         * aot-compiler.c: don't leak the value returned from
3348         mono_type_full_name().
3349
3350 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3351
3352         * debugger-agent.c: defer including mono-mutex.h until we know the
3353         agent is supported.
3354
3355 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3356
3357         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3358         of pthreads directly.
3359
3360         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3361         exception handlers. Pass info argument.
3362
3363         * mini.h: Adjust signatures of soft debugger functions to pass void*
3364         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3365
3366         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3367         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3368         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3369         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3370
3371         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3372
3373         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3374         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3375         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3376         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3377
3378         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3379
3380         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3381
3382         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3383
3384         * mono-semaphore.h: Skeleton implementation for Windows.
3385
3386         Code contributed under MIT/X11 license.
3387
3388 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3389
3390         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3391
3392         Code contributed under MIT/X11 license.
3393
3394 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3395
3396         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3397
3398         Code contributed under MIT/X11 license.
3399
3400 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3403         debug info to 100 because 10 still slows down gdb too much.
3404
3405         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3406         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3407         them in the wrappers.
3408
3409 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3410
3411         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3412
3413         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3414
3415         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3416         function mono_aot_get_array_helper_from_wrapper ().
3417
3418         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3419         array helper methods.
3420
3421 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3422
3423         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3424         the value was loaded from memory.
3425
3426         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3427         the value was loader from there.
3428
3429         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3430         without constant swizzle.
3431
3432 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3433
3434         * mini-amd64.c: Put soft debugger functions behind a
3435         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3436
3437         * mini-amd64.h: disable the soft debugger in windows.
3438
3439         Code contributed under MIT/X11 license.
3440
3441 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3442
3443         * mini-x86.c: Put soft debugger functions behind a
3444         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3445
3446         Code contributed under MIT/X11 license.
3447
3448 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3449
3450         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3451         to mono_arch_find_jit_info_ext.
3452
3453         Code contributed under MIT/X11 license.
3454
3455 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3458
3459         * debugger-agent.c: Add support for filtering events by assemblies.
3460
3461         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3462         the agent is not enabled.
3463
3464 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3465
3466         * exceptions-x86.c: hopefully last change to fix the windows build.
3467         This one courtesy of Jonathan Chambers.
3468
3469 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3470
3471         * debugger-agent.c: remove unused function.
3472
3473 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3474
3475         * debugger-agent.c: add #ifdefs for a few header files.
3476         * mini-x86.h: disable the soft debugger in windows.
3477         Step 1 of 2 to make this compile on windows with gcc.
3478
3479 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3480
3481         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3482         as it breaks the build.
3483
3484 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3485
3486         Merge the soft debugger branch.
3487
3488         * debugger-agent.h debugger-agent.c: New files containing the soft
3489         mode debugger module.
3490
3491         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3492         at the appropriate locations.
3493
3494         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3495         opcode.
3496
3497         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3498         enable/disable single stepping.
3499
3500         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3501         which returns all information in a StackFrameInfo structure, and can handle the
3502         LMF frames added by the debugger.
3503
3504         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3505         about an LMF frame.
3506
3507         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3508         walker function which works on a specific thread and passes a StackFrameInfo
3509         structure to its callback.
3510
3511         * mini.c (mini_init): Initialize the debugger agent.
3512
3513         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3514
3515         * mini-ops.h: Add OP_SEQ_POINT opcode.
3516
3517         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3518         arguments to the debugger agent.
3519
3520 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3521
3522         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3523         speed things up.
3524
3525         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3526
3527         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3528
3529         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3530
3531         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3532         if needed.
3533         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3534         sets the IMT argument and makes a virtual call.
3535
3536         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3537
3538 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3541         the windows build.
3542
3543 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3544
3545         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3546         runtime. Fixes #551228.
3547
3548 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3549
3550         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3551
3552         * basic.cs: Add a test.
3553
3554         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3555         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3556         CONSTRAINED. Fixes #550964.
3557
3558         * generics.cs: Add a test.
3559
3560 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3561
3562         * mini-posix.c (add_signal_handler): Use
3563         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3564
3565 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3566
3567         Contributed under the terms of the MIT/X11 license by
3568         Jerry Maine <crashfourit@gail.com>.
3569
3570         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3571         sse4a for simd intrinsics.
3572
3573         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3574         sse4a for simd intrinsics.
3575
3576 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3577
3578         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3579         instead of inst_p1 which is not the same on ILP32 platforms.
3580
3581 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3582
3583         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3584         not the mscorlib one before calling mono_get_lmf_addr.
3585
3586         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3587         of the ip to the LMF.
3588
3589         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3590         immediate in the op->op_imm optimization.
3591
3592         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3593         understand. VTypes now work, but are not abi compliant, as they are
3594         split into 4 byte parts instead of 8.
3595         (emit_memcpy): Fix the unrolled case to work on the PS3.
3596
3597         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3598
3599         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3600         the default when static linking.
3601
3602         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3603
3604         * aot-compiler.c: Add an autoreg option to automatically register
3605         statically linked aot modules using ELF .ctors.
3606
3607         * genmdesc.pl: Add __ppc64__ to allowed defines.
3608
3609 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3610
3611         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3612         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3613
3614 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3615
3616         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3617
3618 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3619
3620         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3621         which will contain the domain where the method was found.
3622
3623         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3624         mini_jit_info_table_find ().
3625
3626         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3627
3628         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3629
3630 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3631
3632         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3633         set, its not supported yet.
3634
3635 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3638         iface wrapper is not found.
3639         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3640
3641 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3644         which have a different name.
3645
3646         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3647         wrappers and Array.GetGenericValueImpl ().
3648
3649         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3650         because of the change above.
3651
3652         * generics.cs: Add a test for full aot + generic array ifaces.
3653
3654 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3655
3656         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3657         that hides the previous one.
3658
3659 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3660
3661         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3662         marshalled. Fixes #541623.
3663
3664 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3665
3666         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3667
3668 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3669
3670         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3671
3672 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3673
3674         * mini-posix.c (sigprof_signal_handler):
3675         Implemented support for building stat call chans in different ways.
3676
3677 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3678
3679         * mini-exceptions.c (mono_find_jit_info):
3680         Also check that a jit info has been found (fixes a profiler crash).
3681
3682 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3683
3684         * mini.c (mono_codegen):
3685         Call mono_profiler_code_buffer_new with correct code address.
3686
3687 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * driver.c (mono_main): Change the date in the copyright.
3690
3691 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3692
3693         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3694         allocator in shared generic code for open classes, because we
3695         can't get those classes' vtables.  We need to make managed
3696         allocators not depend on the vtable at compile-time to solve this.
3697
3698 2009-10-13  Martin Baulig  <martin@ximian.com>
3699
3700         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3701         `const guint8 *trampoline' argument; send both the old and the new
3702         notification.
3703
3704 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3705
3706         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3707         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3708         (can_marshal_struct): Skip structures with auto layout.
3709
3710         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3711
3712 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3713
3714         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3715         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3716         a variable to hold the stack slot used by the int<->float conversion opcodes.
3717
3718         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3719
3720 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3721
3722         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3723         when using full-aot.
3724
3725 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3726
3727         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3728         each instance of Comparer<T>.
3729
3730         * generics.cs: Add a new test.
3731
3732 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * driver.c (parse_debug_options): Add a 'gdb' option.
3735
3736         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3737
3738         * image-writer.c: Add support for emitting the image into a memory buffer.
3739
3740         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3741
3742         * aot-compiler.c: Add support for registering debug info with GDB using the
3743         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3744         MONO_XDEBUG to 'gdb'.
3745
3746 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3749         gdb mode.
3750
3751 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3752
3753         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3754         can be used to set breakpoints in gdb.
3755
3756         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3757         segment to an absolute address.
3758
3759 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3760
3761         * method-to-ir.c: Use the managed array allocator method if
3762         available.
3763
3764 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3765
3766         * aot-compiler.c : Fix the MSVC builds
3767
3768         Code is contributed under MIT/X11 license.
3769
3770 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3771
3772         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3773         avoid registering 1 symbol file per method with gdb.
3774
3775 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3776
3777         * mini-sparc.c: Fix the handling of enums with base type long.
3778
3779         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3780
3781         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3782         instead of using type->data.klass as the later doesn't work with generics.
3783
3784 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3785
3786         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3787         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3788         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3789         works differently now and we don't handle it in the JIT anymore.
3790
3791         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3792         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3793         the Thread class split.
3794
3795 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3796
3797         * driver.c: Don't run tests with the obsolete treeprop optimization.
3798
3799         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3800         variable volatile. Fixes #541577.
3801
3802         * basic-calls.cs: Add a new test.
3803
3804         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3805
3806 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3809         work/required with recent iphone sdk versions.
3810
3811         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3812         structures.
3813
3814         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3815         in the VCALL decomposition code.
3816
3817 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3818
3819         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3820
3821         * basic.cs: Add a test.
3822
3823         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3824         generic invokes.
3825
3826         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3827         searches all the domains of the current thread.
3828
3829         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3830
3831 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3832
3833         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3834         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3835
3836         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3837         for non-jit trampolines.
3838
3839         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3840
3841         * aot-compiler.c (add_wrappers): Ditto.
3842
3843         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3844         the size of the param area used by dyn_call to 6 which covers the majority of
3845         methods.
3846
3847         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3848
3849         * mini-arm.c: Implement support for passing/receiving
3850         longs and receiving floats in the dyn_call code.
3851
3852         * mini-amd64.c: Implement support for receiving vtypes in registers in
3853         the dyn_call code.
3854
3855         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3856         the dyn_call code.
3857
3858 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3859
3860         * mini-arm.c (get_call_info): Return more precise information in
3861         ArgInfo->regtype.
3862         (dyn_call_supported): Use the information in CallInfo.
3863
3864         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3865
3866         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3867         code.
3868
3869         * mini-arm.c: Update after the dyn_call api changes.
3870
3871         * mini.c (mini_create_jit_domain_info): Register a destructor function
3872         for the runtime_invoke_hash.
3873
3874         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3875         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3876         this function.
3877         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3878         (dyn_call_supported): Simplify this by using get_call_info ().
3879         (mono_arch_dyn_call_free): New destructor function.
3880
3881         * generics.cs: Remove a printf.
3882
3883         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3884
3885         * mini-arm.c: Add support for enum return values and passing a few arguments
3886         on the stack.
3887         
3888         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3889         dyn invoke.
3890
3891         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3892
3893         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3894         the dynamic invoke wrappers.
3895
3896         * mini-arm.c: Implement OP_DYN_CALL for arm.
3897
3898         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3899         supported by the dynamic runtime invoke wrapper.
3900
3901         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3902         runtime invoke wrapper.
3903
3904         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3905         if possible when running with full-aot.
3906
3907         * mini-ops.h: Add OP_DYN_CALL opcode.
3908
3909         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3910         with dynamic arguments lists similar to libffi.
3911
3912 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3913
3914         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3915         
3916         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3917         to NEWARR.
3918
3919         * iltests.il.in: Add a new test.
3920         
3921 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3922
3923         * aot-compiler.c (add_generic_instances): Add more instances of
3924         GenericEqualityComparer.
3925
3926 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3927
3928         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3929
3930 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3931
3932         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3933         comments on some functions that now can fail.
3934
3935 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3936
3937         * Makefile.am: Add Info.plist to EXTRA_DIST
3938
3939 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3940
3941         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3942         static synchronized wrappers. Fixes #539500.
3943
3944 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3945
3946         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3947         properly.
3948
3949 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3952         lmf before calling filter clauses as well. Fixes #539550.
3953
3954         * exceptions.cs: Add a test.
3955         
3956 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * aot-compiler.c (add_generic_class): Add instances of
3959         Array.GetGenericValueImpl as well.
3960
3961         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3962         can be tested too.
3963
3964         * generics.cs: Add a fullaot linq test.
3965
3966 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3967
3968         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3969         reg r1 on arm.
3970
3971 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3972
3973         * mini-trampolines.c (mono_delegate_trampoline) : Call
3974           mono_cominterop_get_invoke if the delegate target object
3975           is a COM object.
3976
3977         Code is contributed under MIT/X11 license.
3978
3979 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3980
3981         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3982         internal call is defined outside platform code. Reduce code 
3983         duplication with existing [Method|Field]AccessException
3984
3985 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3986
3987         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3988         if the return value is a small struct passed on regs.
3989
3990 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3991
3992         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3993
3994         * mini-codegen.c: Enable the cpu description validation for arm.
3995
3996 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3999         test which depends on structs to objects.cs.
4000         
4001         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4002         require object model related stuff working.
4003
4004         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4005
4006         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4007
4008         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4009         against the instruction metadata in mini-ops.h. amd64 only for now.
4010
4011         * mini-ops.h: Fix some instruction descriptions.
4012
4013         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4014         unused instructions.
4015
4016 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4017
4018         * exceptions.cs: Add a new test.
4019
4020 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4021
4022         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4023
4024 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4025
4026         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4027         skip empty phi opcodes.
4028         
4029         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4030         correctly by zero extending after loads. Skip methods containing calls
4031         to the monitor enter/exit trampolines.
4032
4033         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4034         when calling mono_thread_force_interruption_checkpoint ().
4035
4036         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4037
4038         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4039         64 bit thunks.
4040         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4041
4042         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4043         bootstrap could run.
4044
4045 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4048
4049 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4052         of the method to
4053         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4054         LLVM might be very short.
4055
4056         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4057         in OP_THROW/RETHROW.
4058
4059         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4060         alignment on osx.
4061
4062 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4063
4064         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4065         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4066         LLVM might be very short.
4067
4068 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4071         the alignment for the value of sp.
4072
4073 2009-09-01  Geoff Norton  <gnorton@novell.com>
4074
4075         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4076         managed wrappers in full aot.
4077
4078 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4081
4082 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4083
4084         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4085
4086 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4089
4090         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4091         saved info.
4092
4093         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4094
4095         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4096         depend on the info MonoMethodHeader which could be missing in IL stripped
4097         assemblies.
4098
4099 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4102         they are only 4 byte aligned.
4103
4104 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4107         was done previously, since using SP causes too many problems.
4108
4109         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4110         frames without a frame pointer works.
4111
4112         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4113         global register in methods with calls, since the calls can go through
4114         a static rgctx trampoline which doesn't save it.
4115
4116 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4119
4120 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4123
4124 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4125
4126         * method-to-ir.c: Fix warnings for uninitialized variables.
4127
4128 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4129
4130         * mini-exceptions.c:
4131         * aot-compiler.c: Fix printf warnings.
4132
4133 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4134
4135         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4136         Add GetGenericValueImpl<string>.
4137         
4138         * aot-compiler.c (add_generic_instances): Add instances of
4139         GenericEqualityComparer<T> for primitive types. Only emit the array
4140         wrappers into the mscorlib image.
4141
4142 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4143
4144         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4145         the methods_loaded array using amodule->info->nmethods.
4146
4147         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4148         (MONO_AOT_FILE_VERSION): Bump this.
4149
4150         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4151         to work.
4152
4153         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4154         MonoJitInfo doesn't belong to its methods aot image.
4155
4156 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4157
4158         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4159
4160         * mini-arm.c: Fix warnings.
4161         
4162         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4163
4164         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4165         supports it.
4166
4167 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4168
4169         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4170         avoid clobbering IP.
4171
4172         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4173         hold the trampoline argument, so its initial value is available during
4174         debugging.
4175
4176 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4177
4178         * exceptions-arm.c:
4179         * exceptions-hppa.c:
4180         * mini.c:
4181         * exceptions-s390x.c:
4182         * exceptions-mips.c:
4183         * exceptions-ppc.c:
4184         * exceptions-sparc.c:
4185         * exceptions-alpha.c:
4186         * aot-runtime.c:
4187         * mini-trampolines.c:
4188         * exceptions-x86.c:
4189         * exceptions-s390.c: add and use #define's instead of sizeof()
4190         for MonoJitInfo and MonoJitInfoTable.
4191
4192 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4193
4194         * tramp-arm.c:
4195         * tramp-amd64.c:
4196         * tramp-ppc.c:
4197         * tramp-x86.c: use a #define instead of sizeof() for a few
4198         structures that use a zero-length array.
4199
4200 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4201
4202         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4203         case when the method is dynamic. Fixes #529238.
4204
4205 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4206
4207         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4208         of asserting when a method is JIT compiled in full-aot mode.
4209
4210 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4211         
4212         Contributed under the terms of the MIT/X11 license by
4213         Jerry Maine <crashfourit@gail.com>.
4214         
4215         * fixed wrong dates in changelog.
4216
4217 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4218         
4219         Contributed under the terms of the MIT/X11 license by
4220         Jerry Maine <crashfourit@gail.com>.
4221
4222         * basic-simd.cs: added test for packed double square root.
4223         * cpu-amd64.md: added opcode info for packed double square root.
4224         * cpu-x86.md: added opcode info for packed double square root.
4225         * mini-ops.h: added IR opcode for packed double square root.
4226         * mini-x86.c: added IR to native translation code for packed double square root.
4227         * mini-amd64.c: removed todo for packed double square root.
4228         * simd-intrinsics.c: added method to IR opcode converstion for
4229         packed double square root.
4230
4231 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4232
4233         Contributed under the terms of the MIT/X11 license by
4234         Jerry Maine <crashfourit@gail.com>.
4235
4236         * mini-amd64.c: Added a change to help tell the difference as 
4237         to what perpose the xmm register is being used--mainly to help
4238         with debuging.
4239         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4240         (one used for special cases) xmm registers for both fp
4241         and simd ops. Added define to turn on new feature in the regalloc
4242         that allows fp and simd ops to share the xmm regs happily.
4243         * codegen.c: Added code to detect for which perpose an xmm reg is
4244         being used (fp or simd) and to translate back and forth to the
4245         correct logical reg bank (fp or simd) for 'spill load's.
4246
4247 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4248
4249         Contributed under the terms of the MIT/X11 license by
4250         Jerry Maine <crashfourit@gail.com>.
4251
4252         * basic-simd.cs: Added tests for stressing the regalloc when running with
4253         16 simd regs and when simd and fp ops share the same reg bank.
4254
4255 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4256
4257         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4258         in shared generic code, we might have to look up the class in the
4259         RGCTX.  If we use the class directly, compute its GC descriptor.
4260
4261 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4262
4263         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4264
4265 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4266
4267         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4268         check for errors. Fixed the case when the class with the Main
4269         method is broken.
4270
4271 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4272
4273         Contributed under the terms of the MIT/X11 license by
4274         Jerry Maine <crashfourit@gail.com>.
4275
4276         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4277
4278 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4279
4280         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4281
4282 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4283
4284         * method-to-ir.c: Fix naming of stelem and ldelem.
4285
4286 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4287
4288         * driver.c (main_thread_handler): Check that the assembly loaded
4289         matches the filename when doing AOT.
4290
4291 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4292
4293         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4294         call it anymore.
4295
4296         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4297         utils/mono-sigcontext.h).
4298
4299         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4300         #ifdef.
4301
4302 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4303
4304         * mini.c (mono_codegen):
4305         Call profiler hook to keep track of method code buffers.
4306
4307 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4308
4309         * method-to-ir.c: Invoke write barriers for the
4310         Interlocked.(Compare)Exchange JIT intrinsics.
4311
4312 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4313
4314         * Makefile.am (version.h): Fix issues when built out of tree.
4315         Remove some redundant 'grep's piped through 'sed's.
4316
4317 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4318
4319         This patch is contributed under the terms of the MIT/X11 license
4320
4321         * mini-ppc.c (mono_arch_output_basic_block):
4322         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4323         for bits 32-47 with signed load/store diplacements for bits
4324         48-63.  Use prefered base/offset order for indexed form.
4325         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4326         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4327         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4328         OP_LOADI2_MEMBASE): Same.
4329         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4330         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4331         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4332         indexed form.
4333         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4334         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4335         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4336         OP_LOADI1_MEMINDEX): Same
4337         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4338         OP_STORER8_MEMINDEX): Same
4339         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4340         computations.
4341         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4342         for bits 32-47 with signed load/store diplacements for bits
4343         48-63.  Use prefered base/offset order for indexed form.
4344
4345 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4346
4347 This patch is contributed under the terms of the MIT/X11 license
4348
4349         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4350         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4351         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4352         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4353         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4354         cfg->stack_usage to avoid size warnings.
4355         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4356         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4357         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4358         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4359         to convert.
4360         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4361         after code varible is initialized.
4362         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4363         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4364         (mono_arch_emit_epilog): 
4365         Move Use ppc_load32 for cfg->stack_usage to avoid size
4366         warnings.
4367
4368 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4369
4370         * method-to-ir.c: The write barrier doesn't do the store anymore,
4371         so we have always to emit it.  Also, emit the wbarrier after the
4372         store.
4373
4374 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4377         for argument count 3 too.
4378
4379 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4382         the caller handle the exceptions.
4383         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4384         method. Fixes #524498.
4385
4386 2009-07-22  Geoff Norton  <gnorton@novell.com>
4387
4388         * mini-exceptions.c: Fix build on ia64.
4389
4390 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4391
4392         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4393         barriers.
4394
4395 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4396
4397         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4398         code.
4399
4400 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4401
4402         * basic-simd.cs (Main): Pass args to the test driver.
4403
4404 2009-07-20  Geoff Norton  <gnorton@novell.com>
4405
4406         * mini-x86.h: Fix the x86 version guards to use Apple's
4407         properly defined macros.
4408
4409 2009-07-20  Geoff Norton  <gnorton@novell.com>
4410
4411         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4412         aligned access.
4413
4414 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4415
4416         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4417         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4418         the information which is needed for invokes, so only one locking+hash table
4419         lookup is needed.
4420
4421         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4422         
4423         * aot-compiler.c (add_generic_instances): Emit instances of 
4424         GenericComparer<T> for primitive types.
4425
4426 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4427
4428         * mini-posix.c: Fix linux build.
4429
4430 2009-07-19  Geoff Norton  <gnorton@novell.com>
4431
4432         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4433         mono_gdb_render_native_backtraces
4434         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4435         so we implement the sane semantics to the runtime here
4436         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4437         so we need to call it differently (mono_gdb_render_native_backtraces)
4438         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4439         here for default implementations.
4440         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4441         support Apple's weird syscall (SYS_fork) implementation and not busy
4442         loop in abort() on native crashes on OSX anymore.
4443
4444 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * aot-runtime.c (load_method): Change the handling of the
4447         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4448         are used.
4449
4450         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4451
4452 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4455         seems to break the aot tests.
4456         
4457         * mini.c (mono_patch_info_equal): Fix the handling of 
4458         MONO_PATCH_INFO_RGCTX_FETCH.
4459
4460 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4461
4462         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4463
4464         * mini.c (mono_patch_info_hash): Fix the handling of 
4465         MONO_PATCH_INFO_INTERNAL_METHOD.
4466         (mono_patch_info_equal): Ditto.
4467
4468 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4469
4470         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4471         in a few places.
4472         
4473         * mini-llvm.c: Add some infrastructure for AOT support.
4474
4475 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4476
4477         * mini-llvm-cpp.c: Update to the latest llvm api.
4478         
4479         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4480         option to false to prevent llvm from installing signal handlers which
4481         trip up the gc.
4482         
4483 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4484
4485         * cpu-x86.md:
4486         * cpu-amd64.md: Revert previous change as those instructions
4487         take 2 separate arguments. Remember to read the arch docs more
4488         carefully next time.
4489
4490 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4491
4492         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4493
4494 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4495
4496         * mini-ppc.c: exploit multiple load/store units if available (rest of
4497         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4498         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4499
4500 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4501
4502         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4503         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4504
4505 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4506
4507         * cpu-x86.md: Fix missing clobbering from trancendental simd
4508         ops.
4509
4510         * cpu-amd64.md: Same.
4511
4512 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4513
4514         Contributed under the terms of the MIT/X11 license by
4515         Jerry Maine <crashfourit@gail.com>.
4516
4517         * basic-simd.cs: Added tests for single and doulble indexers.
4518
4519         * cpu-amd64.md: Added simd opcode information.
4520
4521         * mini-amd64.c: Added IR to native simd generation code.
4522         Added simd register names and function that returns them.
4523
4524         * mini-amd64.h: Added marcos to turn on simd code compilation in
4525         amd64. Added max simd register count marco. Added caller/callee
4526         register mask marcos. Added marcos to use simd register bank.
4527
4528         * mini.h: Added helper marco for shufling dwords and simple
4529         floats.
4530
4531 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4534
4535         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4536
4537         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4538         the length of the native code as well.
4539
4540         * basic-simd.cs: Add a test for #521662.
4541
4542 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4543
4544         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4545
4546 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4547
4548         * mini.c: Register function for getting the IP from a signal
4549         context with metadata.
4550
4551 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4552
4553         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4554         call a generic class init trampoline if needed. Fixes #519336.
4555
4556         * generics.cs: Add a test.
4557         
4558 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4559
4560         * method-to-ir.c: When doing a call which might be remote from
4561         shared generic code to other shared code with open type arguments,
4562         get the remoting invoke wrapper from the RGCTX and do an indirect
4563         call to it.
4564
4565 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4566
4567         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4568         after the unbox trampoline in the full-aot case.
4569
4570 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4571         
4572         * mini.c: Move initialization of jit_mutex before debugger initialization
4573         
4574         to avoid crashes.
4575         
4576         
4577         * Info.plist: added Info.plist and link flag to enable the mono executable
4578         to access other processes. Requires codesigning of the executable to work.
4579         
4580         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4581         
4582         compile on OS X.
4583         
4584
4585 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4586
4587         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4588
4589 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4590
4591         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4592         when the generic instance is an instantiation of a subclass of the
4593         methods class. Fixes #517166.
4594
4595 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4598         code.
4599
4600         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4601         AOTed code.
4602
4603         * CMakeLists.txt: Add minimal support for installation.
4604
4605 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4606
4607         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4608         determine whenever a method is directly callable to a separate function.
4609
4610         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4611         needed ones as a result of the previous change.
4612
4613         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4614         type of register arrays.
4615
4616         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4617         type of register arrays.
4618
4619 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4620         
4621         Contributed under the terms of the MIT/X11 license by
4622         Jerry Maine <crashfourit@gail.com>.
4623
4624         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4625
4626 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4627
4628         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4629
4630 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4631
4632         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4633         dump of structure return value. Fix some formatting.
4634         * cpu-s390x.md: Fix lengths of instruction sequences.
4635         * mini-s390.c: Minor formatting changes.
4636
4637 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4638
4639         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4640         Use sigaction on freebsd as well.
4641
4642 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4643
4644         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4645         uses #ifdef on it.
4646         
4647         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4648
4649 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4650
4651         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4652
4653 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4654
4655         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4656
4657 2009-06-20  Martin Baulig  <martin@ximian.com>
4658
4659         * debug-mini.c
4660         (MonoDebuggerThreadFlags): New enum typedef.
4661         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4662         (mono_debugger_thread_created): Added `gpointer func' argument;
4663         initialize the new `thread_flags' field.
4664
4665 2009-06-18  Martin Baulig  <martin@ximian.com>
4666
4667         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4668         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4669
4670         * debug-debugger.c
4671         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4672         flag in `MONO_DEBUGGER__info.runtime_info'.
4673
4674         * driver.c
4675         (mono_main): Call mini_debugger_set_attach_ok() if generics
4676         sharing is disabled.
4677
4678 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4679
4680         * aot-compiler.c (add_wrappers): Fix a warning.
4681
4682         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4683         the ppc load/store macro changes.
4684
4685 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4686
4687         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4688
4689         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4690         not just the got symbol.
4691
4692         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4693         on ppc.
4694
4695         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4696         ppc.
4697         
4698         * aot-compiler.c: Remove some fixmes.
4699
4700         * driver.c (mono_main): Print a helpful message when cross-compiling.
4701
4702         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4703
4704         * method-to-ir.c (initialize_array_data): Do the optimization if the
4705         target byte order is little endian, instead of the host byte order.
4706
4707         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4708         wrappers into the mscorlib image, Emit a unique plt symbol for each
4709         image, emit symbols for plt entries.
4710
4711         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4712         a .size directive.
4713         
4714 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4715
4716         * aot-compiler.c (add_wrappers): Avoid calling 
4717         mono_marshal_get_type_info () since it can assert for some types.
4718
4719         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4720         ldtoken are used inside wrappers.
4721
4722         * helpers.c: Add support for prefixing tools with the arch name.
4723
4724         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4725         quantities when using ilp32.
4726
4727         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4728         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4729
4730         * image-writer.c: Use .long on ilp32.
4731
4732         * aot-compiler.c: Use 32 bit loads on ilp32.
4733         
4734 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4735
4736         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4737
4738         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4739
4740         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4741
4742         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4743         second got slot of every aot image.
4744         
4745         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4746         aot on platforms with function pointers.
4747
4748         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4749         support for aot/full aot on ppc/ppc64.
4750         
4751         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4752         arguments which are needed on ppc.
4753
4754         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4755         argument.
4756
4757         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4758         
4759         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4760
4761         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4762
4763         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4764
4765         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4766
4767 2009-06-17  Geoff Norton  <gnorton@novell.com>
4768
4769         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4770
4771 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4774         to control whenever the dwarf writer is in xdebug or aot mode.
4775         (emit_class_dwarf_info): Use a separate abbrev for structures without
4776         children.
4777
4778         * aot-compiler.c: Pass the appending parameter to 
4779         mono_dwarf_writer_create ().
4780
4781         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4782         falls through to its next bblock. Fixes #513931.
4783
4784         * iltests.il: Add a test.
4785
4786         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4787         infor even if emit_line is FALSE, as the apple linker seems to require it.
4788
4789         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4790
4791         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4792         gcc does.
4793         (emit_fde): Ditto.
4794
4795 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4796
4797         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4798         mips build.
4799
4800 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4801
4802         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4803         'has_call_handler' fields.
4804
4805         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4806
4807         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4808         first bblock if not needed. Fixes #512790.
4809         
4810 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4813         
4814         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4815         wrappers.
4816
4817         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4818         remoting-invoke-with-check wrappers, which are not needed when running with
4819         full-aot, since it doesn't support remoting.
4820         
4821 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4822
4823         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4824
4825         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4826         method info, it is not used anymore.
4827
4828         * mini.h: Bump AOT file format version.
4829         
4830         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4831         word smaller.
4832
4833         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4834         change above.
4835         
4836         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4837
4838         * mini.h: Bump AOT file format version.
4839         
4840 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4841
4842         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4843         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4844         iphone.
4845
4846         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4847         of CKFINITE and FBGE for VFP.
4848
4849 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4850
4851         * aot-compiler.c: Don't align code to 16 bytes on arm.
4852         
4853         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4854         before the methods they belong to.
4855
4856         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4857         the full-aot case if possible, since the trampoline will be called right 
4858         away.
4859
4860         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4861         trampolines to 1024 after the change above.
4862
4863         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4864         trampoline to save 8 bytes per trampoline.
4865
4866         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4867         change above.
4868
4869 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4870
4871         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4872
4873 2009-06-08  Martin Baulig  <martin@ximian.com>
4874
4875         * debug-mini.c
4876         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4877         (_mono_debugger_throw_exception): Don't make this static.
4878         (_mono_debugger_unhandled_exception): Likewise.
4879         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4880
4881         * debug-mini.c
4882         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4883         (_mono_debugger_throw_exception): Add function prototype.
4884         (_mono_debugger_unhandled_exception): Likewise.
4885
4886         * mini-exceptions.c
4887         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4888         arg; return the first exception handler if the exception is caught
4889         and we're running inside the debugger.
4890         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4891         improve exception handle inside runtime-invoke, check whether the
4892         exception is actually caught in the method being invoked and not
4893         by the runtime-invoke-wrapper.
4894
4895 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * image-writer.c: Improve support for the osx assembler.
4898
4899         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4900         support them.
4901
4902 2009-06-08  Martin Baulig  <martin@ximian.com>
4903
4904         * debug-mini.c
4905         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4906         (_mono_debugger_throw_exception): Don't make this static.
4907         (_mono_debugger_unhandled_exception): Likewise.
4908         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4909
4910         * debug-mini.c
4911         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4912         (_mono_debugger_throw_exception): Add function prototype.
4913         (_mono_debugger_unhandled_exception): Likewise.
4914
4915         * mini-exceptions.c
4916         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4917         arg; return the first exception handler if the exception is caught
4918         and we're running inside the debugger.
4919         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4920         improve exception handle inside runtime-invoke, check whether the
4921         exception is actually caught in the method being invoked and not
4922         by the runtime-invoke-wrapper.
4923
4924 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4925
4926         * image-writer.c (append_subsection): Don't align subsections of the
4927         debug_line section as a workaround.
4928
4929         * dwarfwriter.c: Emit line number info in the AOT case as well.
4930
4931 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4932
4933         This patch is contributed under the terms of the MIT/X11 license
4934
4935        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4936        code_len <= code_size
4937
4938 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4939
4940         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4941
4942 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4943
4944         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4945         invoke wrappers, we now use trampolines instead.
4946
4947 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4948
4949         * mini-darwin.c: The exception thread must not be registered with
4950         the GC.
4951
4952 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4953
4954         * mini-gc.c: Disable the code because it makes SGen crash.
4955
4956 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4959         instead of asserting.
4960
4961 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4962
4963         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4964         output file after the code has been compiled.
4965
4966 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4969
4970 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4973         entries distinction to simplify the code.
4974
4975         * mini.h: Bump AOT file format version.
4976         
4977 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * objects.cs: Fix the signature of one of the tests.
4980
4981         * mini.c (mini_create_ftnptr): New helper function, moved here from
4982         object.c.
4983         (mini_get_addr_from_ftnptr): Ditto.
4984         (mini_init): Install the new helpers.
4985
4986 2009-05-28  Martin Baulig  <martin@ximian.com>
4987
4988         Correctly initialize the debugger when embedding Mono.
4989
4990         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4991         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4992         see documentation in mini_debug_running_inside_mdb().
4993
4994         * debug-debugger.c
4995         (mini_debug_running_inside_mdb): New function to check whether
4996         we're running inside mdb.
4997
4998         * mini.c (mini_init): Call mini_debugger_init() if we're running
4999         inside the debugger.
5000
5001         * driver.c (mono_main): Moved the call to mini_debugger_init()
5002         into mini_init() to make this work when embedding Mono.
5003
5004         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5005         calls to mini_debugger_init().
5006
5007         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5008         mono_debugger_main() -> mini_debugger_main() and put them inside a
5009         `MONO_DEBUGGER_SUPPORTED' conditional.
5010
5011 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5012
5013         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5014         this is no longer in use.
5015         * mini.h: Same.
5016
5017 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5018
5019         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5020
5021         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5022         methods.
5023
5024 2009-05-27  Martin Baulig  <martin@ximian.com>
5025
5026 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5027
5028         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5029         long_conv_to_r_un to 64 bits.
5030
5031         * cpu-x86.md: Increase the instruction size due to the changes.
5032
5033         * iltests.il.in: Add regression test.
5034
5035         Fixes #467201.
5036
5037 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5038
5039         * objects.cs: Move the previous test from basic.cs to here.
5040
5041 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5042
5043         * basic.cs: Add regression test for #506915.
5044
5045 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5046
5047         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5048         optimization we must check the bb of the first byte of stobj as
5049         it's the only one set in cil_offset_to_bb.
5050
5051         Fixes #506915.  
5052
5053 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5054
5055         * image-writer.c: Fix pointer directive on ppc64.
5056
5057 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5058
5059         * image-writer.c (asm_writer_emit_section_change): Avoid using
5060         .bss subsections on ppc too.
5061
5062 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5063
5064         * image-writer.c: Fix the definition of TARGET_ASM_....
5065         
5066         * image-writer.c: Fix the emission of assembler directives in the last
5067         change.
5068
5069         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5070         exception throwing code to accomodate ppc64.
5071
5072         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5073         size to work on ppc64 too.
5074
5075         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5076         too.
5077
5078         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5079         the assembler dialect instead of using platform specific defines.
5080
5081 2009-05-22  Geoff Norton  <gnorton@novell.com>
5082
5083         * mini-arm.c (get_call_info): If a structure is split between the stack
5084         and argument registers, we should not advance the stack pointer by the entire
5085         native size, but just by the amount that spilled.
5086
5087 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5088
5089         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5090         correctly.
5091
5092 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5093
5094         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5095         wrappers normally.
5096         
5097         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5098         methods so wrapper don't get added twice.
5099         (add_generic_instances): Don't add methods of arrays.
5100
5101         * generics.cs: Mark one test as !FULLAOT.
5102
5103 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5104
5105         * mini-x86.c (emit_move_return_value): Remove unused vars.
5106
5107 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5108
5109         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5110         decomposing 8 bytes structs into a LCALL.
5111
5112         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5113         pointer for where to store the returned regs.
5114
5115         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5116         state the concern.
5117
5118         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5119
5120 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5121
5122         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5123         without getenv.
5124
5125 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5126
5127         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5128
5129         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5130         generics.
5131
5132 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5133
5134         * local-propagation.c (mono_local_cprop): Avoid local propagation
5135         across paired add/sub if the first instruction dest reg is it's
5136         source reg. For example:
5137
5138         int_add_imm R12 <- R12 [1] clobbers: 1
5139         int_sub_imm R42 <- R12 [1] clobbers: 1
5140
5141         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5142         maintain the math identify.
5143
5144         Fixes #505375.
5145
5146 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5147
5148         * Makefile.am: avoid going on the network just to get the revision,
5149         use git log instead
5150
5151 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5152
5153         Fixed estimate for short branches on amd64 (they were off mark, and
5154         enabling call prolog-epilog instrumentations caused assertions).
5155         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5156         estimate for the maximum length of this basic block.
5157         * mini-amd64.c:
5158         - mono_arch_emit_prolog: compute max_length for each basic block
5159           (instead of max_offset), and inflate size estimate also for entry bb
5160           in case of code instrumentation.
5161         - mono_arch_output_basic_block: get rid of "cpos" (the current
5162           estimated "position" in the code), and always use "offset" instead,
5163           which is accurate; at the beginning of the function quickly recompute
5164           max_offset for all the remaining blocks, starting from the current
5165           cfg->code_len (which is correct, and not estimated) and using the
5166           estimated block lengths computed previously.
5167
5168 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5169
5170         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5171         functions, it is already done in the caller.
5172
5173         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5174
5175         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5176         MONO_ARCH_GSHARED_SUPPORTED define.
5177
5178         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5179
5180         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5181         function.
5182
5183 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5186         call to mono_marshal_get_rgctx_invoke ().
5187
5188         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5189         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5190         gshared use the static rgctx trampolines now.
5191         
5192         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5193         platform supports it.
5194
5195 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5196
5197         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5198
5199         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5200
5201 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5202
5203         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5204
5205         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5206         for ppc.
5207
5208 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5209
5210         Made it possible for mono_arch_instrument_epilog to preserve
5211         argument registers, otherwise instrumenting the "epilogue" before
5212         a tail call would clobber them.
5213         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5214         if like mono_arch_instrument_epilog but with an additional parameter
5215         that states if argument registers must be preserved.
5216         * mini.c: implemented mono_arch_instrument_epilog as a call to
5217         mono_arch_instrument_epilog_full without asking to preserve argument
5218         registers (this makes the existing code work as usual).
5219         * mini-amd64.c:
5220         - mono_arch_instrument_epilog: add parameter to transform it into
5221         mono_arch_instrument_epilog_full, and preserve argument registers
5222         when required.
5223         - mono_arch_output_basic_block, OP_TAILCALL case: call
5224         mono_arch_instrument_epilog_full.
5225         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5226         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5227         only transformed mono_arch_instrument_epilog into
5228         mono_arch_instrument_epilog_full.
5229
5230 2009-05-15  Geoff Norton  <gnorton@novell.com>
5231
5232         * mini-darwin.c: This works on arm now.
5233
5234 2009-05-14  Geoff Norton  <gnorton@novell.com>
5235
5236         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5237         embedding api.
5238
5239 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5240
5241         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5242         label names.
5243
5244         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5245         wrappers during full aot mode correctly.
5246
5247         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5248         methods correctly.
5249
5250         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5251         mono_metadata_type_hash ().
5252
5253 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5254
5255         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5256         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5257         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5258         Removed MONO_INST_BRLABEL from the instruction flags, and the
5259         remaining code that used it, because we do not support branches inside
5260         basic blocks (and branch target labels) anymore.
5261         * Makefile.am: As part of the above cleanup, remove reference to
5262         BURG files which don't exist anymore.
5263
5264 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5265
5266         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5267         osx.
5268
5269         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5270         to use mono_arch_throw_corlib_exception.
5271
5272         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5273         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5274
5275         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5276         domain mempool.
5277
5278         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5279
5280         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5281         for the got to make debugging easier and to avoid confusing it with the
5282         system got.
5283         
5284         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5285         method so a breakpoint can be set when using gdb.
5286
5287 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5288
5289         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5290         on mono_method_get_imt_slot ().
5291
5292         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5293         num_decodes variables.
5294
5295         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5296         change as it doesn't seem to work.
5297         
5298         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5299         wrappers.
5300
5301 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5302
5303         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5304         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5305
5306         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5307         builder when using full aot.
5308
5309         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5310         here, it is already handled.
5311         
5312         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5313         correctly for IMT.
5314
5315         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5316
5317         * mini-arm.h: Enable IMT for full aot.
5318         
5319         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5320         arch doesn't support it.
5321
5322         * mini.c (mini_init): Don't disable IMT for full aot if the
5323         architecture supports it.
5324
5325         * mini.h (MonoAotTrampoline): New enum containing the different types
5326         of 'numerous' trampolines.
5327         (MONO_AOT_FILE_VERSION): Bump this.
5328
5329         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5330         static rgctx trampolines. Add support for full-aot IMT thunks.
5331
5332         * mini-amd64.h: Enable IMT for full aot.
5333
5334         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5335         to exclude tests belonging to a category.
5336
5337         * generics.cs: Mark some tests with a !FULLAOT category.
5338
5339         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5340         generics tests.
5341
5342 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5343
5344         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5345         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5346         (emit_plt): Fix a warning.
5347
5348 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5349
5350         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5351         back into aot-compiler.c to a place where the other functions shared by
5352         the runtime and aot compiler are.
5353         
5354         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5355         as done previously, instead of in MonoAotFileInfo, since pointers might have
5356         alignment requirements.
5357
5358         * mini.h: Bump AOT file format version.
5359
5360 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5361
5362         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5363         that is used at runtime from the aot-compiler.c, this makes it
5364         work on setups that remove the AOT compiler from the output
5365         image. 
5366
5367 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5370         PPC.
5371
5372         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5373
5374         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5375
5376         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5377         stuff to mono_arch_decompose_long_opts ().
5378         (mono_decompose_opcode): Remove some dead code.
5379
5380 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5381
5382         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5383         cmethod can be null for quite a some reasons.
5384
5385 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5386
5387         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5388
5389 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5390
5391         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5392
5393 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5396         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5397         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5398         calls returning structures by addr on amd64.
5399
5400         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5401
5402         * iltests.il.in: Restructure the tail call tests a bit.
5403         
5404 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5405
5406         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5407         for virtual methods too.
5408
5409 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5410
5411         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5412         due to regression in verifying System.dll.
5413
5414 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5415
5416         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5417         in dynamic methods.
5418
5419         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5420         instances.
5421
5422         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5423         g_str_hash () which can change.
5424
5425         * driver.c (mini_regression): Disable optimizations not supported by
5426         the cpu. Fixes #500019.
5427
5428         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5429         build.
5430
5431 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5432
5433         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5434         to the latest LLVM code.
5435
5436 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5439
5440 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5441
5442         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5443         x86/amd64.
5444
5445         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5446         no longer saving offsets, so just save the patch types along with the other
5447         info.
5448         * aot-runtime.c (load_patch_info): Update after the changes to 
5449         encode_patch_list ().
5450         (decode_got_entry): Removed, merged into load_patch_info ().
5451         (is_shared_got_patch): Removed, call the same function from
5452         aot-compiler.c.
5453
5454         * mini.h: Bump aot file format version.
5455         
5456         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5457         half-finished no-dlsym code.
5458
5459         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5460         option.
5461
5462         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5463         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5464
5465 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5466
5467         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5468         buffer length to work with AOT code.
5469
5470         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5471         ldfld/stfld opcodes.
5472
5473         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5474         as it is not used.
5475
5476         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5477
5478         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5479
5480         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5481         LLVM API.
5482
5483         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5484         if needed. Don't decompose long operations when using llvm.
5485
5486 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5487
5488         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5489         PAGESIZE constant.
5490
5491         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5492
5493 2009-05-03  Martin Baulig  <martin@ximian.com>
5494
5495         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5496         mono_debugger_insert_method_breakpoint() since the class init
5497         handler we're inserting at the top of the method already gives us
5498         a notification.
5499
5500 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5501
5502         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5503         to mono_arch_decompose_long_opts () for x86 and arm.
5504
5505 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5506
5507         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5508         TARGET_AMD64 here.
5509
5510 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5513         JIT code.
5514
5515 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5516
5517         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5518         number of trampolines used in full-aot mode.
5519
5520         * aot-compiler.c: Add an ntrampolines option to set the number of 
5521         trampolines emitted in full-aot mode.
5522
5523 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5526         a volatile load. Get rid of get_tempname (), llvm assigns names
5527         automatically.
5528
5529         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5530         builder function.
5531
5532         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5533         a value.
5534
5535         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5536         level 1.
5537
5538         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5539         to the same register as a fixed sreg2. Fixes #497271.
5540
5541         * iltests.il.in: Add a new test.
5542
5543 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5544
5545         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5546         stack, since pushes complicate exception handling.
5547
5548         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5549         the stack if they are passed using moves.
5550
5551         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5552
5553         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5554         when using llvm.
5555
5556         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5557         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5558         of FMOVE if it is an R4.
5559
5560 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5561
5562         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5563
5564         * mini.h (LLVMCallInfo): New structure to store calling convention 
5565         information for the LLVM back end similar to the CallInfo structures in 
5566         the back-ends.
5567
5568         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5569         call information in a format usable by LLVM.
5570         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5571
5572         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5573         mono_llvm_emit_call () when compiling using LLVM.
5574
5575         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5576         comments to all functions. Fix memory leaks. Add a public init/cleanup
5577         function.
5578
5579         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5580
5581         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5582         mono_array_new_va () jit icall.
5583         
5584 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5585
5586         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5587         multiple machine description files to be specified.
5588         * mini-ops.h: fixes for cross-compilation.
5589
5590 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5591
5592         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5593         some porting work.
5594
5595 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5596
5597         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5598         to prevent asserts in various passes. Fixes #497220.
5599
5600 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5601
5602         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5603         a racy assert.
5604
5605         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5606         table to avoid duplicates.
5607
5608         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5609         
5610         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5611         option is used.
5612
5613 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5614
5615         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5616         is for method or field access.
5617
5618 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5619
5620         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5621         a Value to stdout.
5622
5623         * mini-llvm.c (mono_llvm_emit_method): Use it.
5624         
5625         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5626         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5627         on volatile values.
5628
5629         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5630         synchronized methods.
5631
5632         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5633
5634         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5635
5636         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5637         OP_LOADI8_MEM.
5638
5639         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5640         allowing some options to be set dynamically.
5641
5642 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5643
5644         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5645         unconditional branch.
5646
5647         * mini.h (MonoTrampolineType): Add new trampoline type 
5648         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5649         compiled code.
5650
5651         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5652         function.
5653
5654         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5655         creation function.
5656
5657         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5658         is enabled. Instead, use the llvm vcall trampoline.
5659         
5660         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5661
5662         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5663         
5664         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5665         functions.
5666
5667         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5668         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5669
5670         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5671         OP_IA64_CSET opcode.
5672
5673         * mini.c: Fix a warning.
5674
5675         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5676         THROW to the appropriate llvm type.
5677
5678 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5679
5680         * mini.c (mini_method_compile): Add statistics for methods JITted
5681         with/without LLVM.
5682
5683 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5684
5685         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5686         OP_IA64_CMP_<cond>_IMM opcodes.
5687
5688 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5689
5690         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5691         corlib exceptions.
5692
5693         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5694         correctly.
5695
5696         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5697         GENERICINST.
5698
5699 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5700
5701         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5702
5703 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5704
5705         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5706         support.
5707
5708         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5709         rgctx invoke trampolines for x86.
5710
5711         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5712         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5713         (mono_arch_get_vcall_slot): Simplify this.
5714
5715 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5716
5717         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5718         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5719
5720 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5721
5722         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5723         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5724
5725         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5726
5727         * liveness.c (visit_bb): Remove a needless assert.
5728
5729 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5730
5731         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5732         full aot support to the arch specific code.
5733
5734         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5735
5736         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5737
5738         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5739         
5740         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5741         collect information about the delegate invoke impl trampolines.
5742
5743         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5744         to save trampolines during full-aot mode.
5745
5746         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5747         creation function which returns a trampoline which sets the rgctx
5748         argument.
5749         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5750         wrapper if possible.
5751         (mono_delegate_trampoline): Ditto.
5752
5753         * mini.c (mono_jit_runtime_invoke): Ditto.
5754
5755         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5756         
5757         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5758
5759         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5760         
5761 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5762
5763         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5764         just setting the opcode to OP_NOP.
5765
5766 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * mini.c (mini_method_compile): Put the last change inside an 
5769         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5770         
5771         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5772         and extend live ranges to cover the whole method when using xdb.
5773
5774         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5775         do it in the trampolines.
5776
5777         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5778         needed.
5779
5780         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5781         
5782         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5783         call code in full-aot mode since IMT is disabled there.
5784         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5785         new JIT no longer has that restriction.
5786
5787         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5788
5789         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5790         a more compact format.
5791         (mono_aot_wrapper_name): New function to return a unique name for a
5792         wrapper method, also used by the AOT runtime.
5793
5794         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5795         aot-compiler.c.
5796
5797         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5798         when a ICollection<T> etc is encountered.
5799         (add_generic_instances): Process method arguments/locals too.
5800         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5801         trampoline names.
5802
5803         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5804         
5805 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5806
5807         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5808
5809         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5810
5811         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5812         representing the result of the decomposition. Nullify instructions
5813         instead of setting them to OP_NOP since nops can't have registers
5814         set.
5815
5816 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5817
5818         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5819         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5820         info. Strip 'mapping symbols' on ARM.
5821
5822         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5823         
5824         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5825         this with the native genmdesc.
5826
5827 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5828
5829         * aot-runtime.c:  Fixing the MSVC build.
5830
5831         Code is contributed under MIT/X11 license.
5832
5833 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5834
5835         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5836         JITted code depends on it.
5837
5838 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5839
5840         * aot-compiler.c: Use new MonoGenericParam accessors.
5841
5842 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5843
5844         Reduce memory usage and improve correctness wrt MonoGenericParam
5845         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5846         handing.  Avoid allocating MonoGenericParams, but use the ones in
5847         the container itself.
5848
5849 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5850
5851         * tasklets.c: Return exceptions in the out argument.
5852
5853 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5854
5855         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5856         opcode. Use pointer types in more places instead of casting them to 
5857         integers.
5858
5859         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5860         optimizations.
5861         (mono_llvm_optimize_method): New helper function to optimize a method.
5862
5863         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5864         widening code so it could be called from more places.
5865         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5866         code paths in the call opcodes.
5867
5868 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5869
5870         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5871
5872 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5873
5874         * dwarfwriter.c: Use _ to separate class name 
5875         components as gdb can't handle '.'. Represent reference variables
5876         as 'class <NAME>&'.
5877         
5878         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5879
5880         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5881         
5882         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5883
5884         * gc-test.cs: New file with GC stack marking tests.
5885         
5886         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5887         negative numbers for vfp.
5888
5889         * basic-float.cs: Add a test.
5890         
5891 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5892
5893         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5894
5895 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5896
5897         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5898         part of tasklet/continuation support.
5899
5900 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5901
5902         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5903         amd64 opcodes inside an ifdef.
5904
5905         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5906         of complex types.
5907         
5908         * dwarfwriter.c (emit_type): Emit the class info for classes.
5909
5910 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5911
5912         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5913
5914         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5915
5916         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5917
5918         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5919
5920 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5921
5922         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5923
5924         * mini-llvm.c: Update comments.
5925
5926         * mini.h (COMPILE_LLVM): New macro.
5927
5928         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5929
5930         * ssa.c (mono_ssa_compute): Ditto.
5931         
5932         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5933         the unwind ops from a DWARF FDE.
5934
5935         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5936         methods by extracting the dwarf unwind ops from the unwind info generated
5937         by LLVM.
5938         
5939         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5940         calls.
5941
5942         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5943         addressing modes.
5944
5945 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5946
5947         * Makefile.am (llvm_sources): Enable this.
5948
5949         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5950         failing back to the JIT if something cannot be handled.
5951
5952         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5953         compiling with LLVM.
5954
5955         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5956         compiling with LLVM.
5957
5958         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5959         compiling with LLVM.
5960
5961         * mini-ops.h: Add a few opcodes needed by LLVM.
5962
5963         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5964         has no unwind info.
5965
5966         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5967         backend.
5968
5969         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5970
5971         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5972
5973 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5974
5975         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5976         ridiculously large methods.
5977
5978 2009-03-31  Martin Baulig  <martin@ximian.com>
5979
5980         * debug-debugger.c (debugger_remove_breakpoint): Call
5981         mono_debugger_remove_class_init_callback ().
5982
5983 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5986         right before emitting code, not at the start.
5987
5988         * mini.c (mono_postprocess_patches): Extract this into a separate function
5989         from mono_codegen ().
5990
5991         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5992         byref types correctly.
5993
5994 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5995
5996         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5997         by the last change.
5998
5999 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6000
6001         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6002         indirect calls, this avoids problems where get_vcall_slot () would get
6003         confused by the native code for the instruction preceeding the call.
6004         (mono_arch_get_vcall_slot): Simplify this.
6005         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6006
6007         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6008         register allocator now seems to depend on them instead of the data in
6009         cpu-<ARCH>.md.
6010
6011         * mini.c (mini_method_compile): Throw the correct type of exception if
6012         mono_method_get_header () fails because of a loading error.
6013
6014 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6015
6016         * mini.c (mini_method_compile): Clear the loader error if the method
6017         header cannot be decoded.
6018
6019         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6020         interface methods on proxies correctly.
6021
6022         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6023         this argument for vtype methods. Add precise liveness info for arguments.
6024
6025         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6026         LIVERANGE_START/END opcodes.
6027
6028         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6029         for arguments and values in registers.
6030
6031 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6032
6033         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6034         return a valuetype. Fixes #487518.
6035
6036         * iltests.il: Add a test.
6037         
6038         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6039
6040         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6041         closed over a null reference correctly.
6042
6043 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6044
6045         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6046
6047 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6048
6049         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6050         allocated to the same registers as fixed sregs.
6051
6052 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6053
6054         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6055         ATOMIC_CAS_IMM ops.
6056
6057         * method-to-ir.c: Handle more cases for
6058         Interlocked.CompareExchange.
6059
6060         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6061         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6062         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6063
6064 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6065
6066         * aot-runtime.c (decode_method_ref): Fix a warning.
6067
6068         * unwind.c (mono_unwind_frame): Ditto.  
6069
6070 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6071
6072         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6073         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6074
6075         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6076         fix the handling of large values in the ALU_PC_G0_NC relocation.
6077
6078 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6079
6080         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6081
6082 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6083
6084         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6085         ops.
6086
6087 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6088
6089         * method-to-ir.c: MINI_OP3 needs a comma.
6090
6091         * method-to-ir.c, mini.h, mini.c: Remove
6092         mono_init_op_sreg_counts ().
6093
6094 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6095
6096         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6097         OP_JMP.
6098         
6099         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6100         assertion.
6101
6102         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6103
6104         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6105         code somewhat.
6106
6107 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6108
6109         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6110         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6111         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6112         operations.
6113
6114 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6115
6116         * driver.c: Change location of gc_wrapper.h.
6117
6118         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6119         inside finally clauses correctly. Fixes #485721.
6120
6121         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6122         after the change above.
6123
6124         * exceptions.cs: Add a test.
6125         
6126 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6127
6128         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6129
6130         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6131         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6132         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6133
6134         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6135         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6136
6137 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6138
6139         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6140         Simplify logic for ensure_method_is_allowed_to_call_method. 
6141         Handle wrappers on callers.
6142
6143 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6144
6145         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6146         them don't run yet.
6147
6148         * basic-simd.cs: Fix the names of some test methods.
6149
6150 2009-03-18  Geoff Norton  <gnorton@novell.com>
6151
6152         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6153
6154 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6155
6156         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6157
6158 2009-03-17  Jb Evain  <jbevain@novell.com>
6159
6160         * driver.c: remove now uneeded call to mono_gc_base_init before
6161         mono_profiler_load.
6162
6163 2009-03-17  Jb Evain  <jbevain@novell.com>
6164
6165         * dwarfwriter.c (token_handler): handle more cases.
6166
6167 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6168
6169         * method-to-ir.c: Remove more dead code (that was required only
6170         because of method_is_safe). Fix compiler warnings.
6171
6172 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6173
6174         * method-to-ir.c: Remove unneeded/useless method_is_safe
6175         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6176
6177 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6178
6179         * mini.c (mini_method_compile): Print the method been compiled with
6180         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6181         for people not familiar with the runtime.
6182
6183 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6186         a managed object which is later put into a GList. Return its class instead.
6187
6188         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6189         stack slots when using sgen.
6190
6191 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6192
6193         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6194
6195 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6196
6197         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6198         > so it works on the first vreg as well.
6199
6200 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6201
6202         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6203         trigger randomly.
6204
6205         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6206         
6207         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6208         implement GArray.
6209
6210 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6211
6212         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6213         native->IL offset mapping.
6214
6215 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6216
6217         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6218
6219         * basic.cs: Add a test.
6220
6221 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6222
6223         * mini-x86.c (mono_arch_output_basic_block): Use different
6224         registers in case the ones we want to overwrite are used by the
6225         other operand.  Fixes regression in #480807.
6226
6227 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6228
6229         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6230
6231         * dwarfwriter.c (emit_line_number_info): The line number info for
6232         IL code was off by one. Fix that.
6233
6234         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6235         stack.
6236
6237 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6238
6239         Contributed under the terms of the MIT/X11 license by Steven
6240         Munroe <munroesj@us.ibm.com>.
6241
6242         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6243         Fixes #483462.
6244
6245 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6246
6247         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6248         as well.
6249
6250 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6251
6252         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6253         the delegate ctor handling code. Fixes #482638.
6254         
6255         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6256         #481458.
6257
6258         * iltests.il.in: Add a test.
6259         
6260         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6261         mini-posix.c.
6262
6263 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6264
6265         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6266         is shared generic code, return the trampoline, even if the method
6267         has already been compiled.  Fixes #479763.
6268
6269         * mini.c, mini.h: New function
6270         mono_jit_find_compiled_method_with_jit_info() which is the same as
6271         mono_jit_find_compiled_method() but also returns the jit info.
6272
6273 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6274
6275         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6276         for methods which actually have one.  For all other methods, make
6277         sure the this argument var is live the whole method.
6278
6279         * mini.c (mini_method_compile): Every shared method has a
6280         this/vtable/mrgctx info.  Fixes #480807.
6281
6282 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6283
6284         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6285         generic/imt thunks where some entries branch through the vtable,
6286         while other entries branch directly.
6287
6288 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6289
6290         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6291
6292         * mini-windows.c: Ditto.
6293         
6294         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6295         ctors.
6296
6297 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6298
6299         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6300         down an assert.
6301
6302 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6303
6304         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6305         #481403.
6306
6307 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6308
6309         * exceptions-x86.c: Include debug-mini.h - fixes build.
6310
6311 2009-03-04  Martin Baulig  <martin@ximian.com>
6312
6313         * debug-mini.c: Clean up the exception API and add documentation.
6314         (mono_debugger_handle_exception): New public method; this is
6315         called when throwing an exception or encountering an unhandled one.
6316         (mono_debugger_call_exception_handler): Formerly known as
6317         mono_debugger_handle_exception(); this is used to tell the
6318         debugger that we're about to invoke an exception handler.
6319
6320 2009-03-04  Martin Baulig  <martin@ximian.com>
6321
6322         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6323         ../metadata/mono-debug-debugger.c; save and reset exception state.
6324
6325 2009-03-02  Martin Baulig  <martin@ximian.com>
6326
6327         * debug-mini.c: Moved the debugger exception handling here from
6328         ../metadata/mono-debug-debugger.c.
6329
6330         * debug-mini.h
6331         (MonoDebuggerExceptionAction): New exception typedef.
6332
6333         * debug-mini.c
6334         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6335
6336         * exceptions-amd64.c
6337         (mono_amd64_throw_exception): Use the new debugger exception
6338         handling code.
6339
6340         * mini-exceptions.c
6341         (mono_handle_exception_internal): Don't call
6342         mono_debugger_unhandled_exception() here.
6343
6344 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * mini.c aot-compiler.c: Update after the changes to 
6347         mono_marshal_get_runtime_invoke ().
6348
6349         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6350         Virtual generic methods might not have method->slot set, work around
6351         that.
6352
6353         * generics.cs: Add a test.
6354
6355 2009-03-02  Geoff Norton  <gnorton@novell.com>
6356
6357         * mini.c:
6358         * driver.c: Allow signal chaining of SIGFPE as well.
6359
6360 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6361
6362         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6363         this since it now receives the method not its generic context in the
6364         IMT reg.
6365
6366         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6367         generic/imt thunks where some entries branch through the vtable, while
6368         other entries branch directly.
6369
6370         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6371
6372         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6373         support for interface methods as well.
6374
6375         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6376         using the normal IMT thunks.
6377
6378         generics.cs: Add new tests.
6379         
6380         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6381         the generic inst to the generic imt thunks. This fixes AOT support, 
6382         improves consistency with the normal IMT thunks, and makes it easier to
6383         add support for interface generic virtual methods later.
6384
6385         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6386         
6387 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6388
6389         * driver.c (mono_set_signal_chaining): New public API function to enable
6390         signal chaining on POSIX platforms.
6391
6392         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6393         (si@lindenlab.com) to implement signal chaining. The original patch was
6394         contributed under the MIT X/11 license:
6395         https://bugzilla.novell.com/show_bug.cgi?id=318894
6396
6397 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6398
6399         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6400         too until it can be made to run on amd64.
6401
6402 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6403
6404         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6405         to  get_generic_context_from_code () + get_call_info () if possible.
6406
6407 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6408
6409         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6410         suspend-on-sigsegv functionality.
6411
6412         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6413         to suspend when a native SIGSEGV is received. This is useful for debugging
6414         crashes which don't happen under gdb, since a live process contains more
6415         information than a core file.
6416
6417         * mini-exceptions.c (mono_print_thread_dump): Use 
6418         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6419
6420         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6421
6422         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6423         
6424         * basic-float.cs: Disable the tests which currently fail on amd64.
6425
6426         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6427         value to mono_arch_patch_callsite () to fix crashes.
6428         
6429         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6430
6431 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6432
6433         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6434         nop code by patching the call address to point to the nullified class init
6435         trampoline, as the former does not seem to be safe on SMP machines.
6436
6437 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6438
6439         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6440         they were wrong.
6441
6442 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6443
6444         * basic-float.cs basic-calls.cs: Fix warnings.
6445
6446 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6447
6448         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6449         correct frame pointer in the LMF.  Should fix #478394.
6450
6451 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6452
6453         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6454
6455         * image-writer.c: Make the binary writer less verbose.
6456
6457 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6458
6459         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6460         are called from runtime invoke wrappers.
6461
6462 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6463
6464         * cpu-ppc.md (store_memindex): Increase the size of this.
6465
6466 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6467
6468         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6469
6470         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6471
6472         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6473         OP_LCONV_TO_R_UN.
6474
6475         Last fix for of #467201.
6476
6477
6478 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6479
6480         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6481
6482         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6483         and long_conv_to_r8_2:
6484
6485         Fixed part of #467201.
6486
6487 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6488
6489         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6490
6491         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6492         conversion to 32 bits.
6493
6494         * cpu-x86.md: Increase the size of int_conv_to_r4.
6495
6496         * basic-float.cs: Add a test for this.
6497
6498         Fixed part of #467201.
6499
6500 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6501
6502         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6503
6504         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6505         conversion to 64 bits.
6506
6507         * basic-float.cs: Add a test for this.
6508
6509         Fixed part of #467201.
6510
6511 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6512
6513         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6514
6515         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6516         This behavior is compatible with MS.
6517
6518         * iltest.il.in: Add a test for this.
6519
6520         Fixed part of #467201.
6521
6522 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6523
6524         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6525
6526         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6527         change the precision of the value.
6528
6529         * cpu-x86.md: Define len for float_conv_to_r4.
6530
6531         * basic-float.cs: Add a test for this.
6532
6533         Fixed part of #467201.
6534
6535 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6536
6537         * mini.c: Adjust locking order to the new semantics where the loader lock
6538         comes first.
6539
6540 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6541
6542         * aot-runtime.c:
6543         * mini-amd64.c:
6544         * mini-arm.c:
6545         * mini-ia64.c:
6546         * mini-mips.c:
6547         * mini-ppc.c:
6548         * mini-sparc.c:
6549         * mini-trampolines.c:
6550         * mini-x86.c:
6551         * mini.c:
6552         * tramp-alpha.c:
6553         * tramp-amd64.c:
6554         * tramp-arm.c:
6555         * tramp-hppa.c:
6556         * tramp-ia64.c:
6557         * tramp-mips.c:
6558         * tramp-ppc.c:
6559         * tramp-s390.c:
6560         * tramp-s390x.c:
6561         * tramp-sparc.c:
6562         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6563
6564 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6565
6566         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6567         as it is incorrect.
6568
6569 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6570
6571         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6572         for cctors if needed.
6573
6574 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6575
6576         * mini-ppc.c: Fix build on Darwin.
6577
6578 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6579
6580         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6581         version instead of 3 as valgrind doesn't like version 3.
6582
6583         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6584
6585         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6586         usable for hashing methods.
6587         (emit_extra_methods): Use the new hash to avoid putting every method in the
6588         same hash bucket.
6589
6590         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6591
6592         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6593         whenever a method ref could match a method.
6594         
6595         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6596         test to fail.
6597         
6598         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6599         methods refs.
6600
6601         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6602
6603         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6604         the encoding buffer.
6605
6606         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6607         mono_method_get_header () on inflated methods as an optimization.
6608
6609 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6610
6611         * ssa.c (fold_ins): Fix another crash if the instruction following the
6612         switch was optimized away.
6613
6614 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6615
6616         Contributed under the terms of the MIT/X11 license by Steven
6617         Munroe <munroesj@us.ibm.com>.
6618
6619         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6620
6621 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6622
6623         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6624         around the mono_domain_alloc calls, it is now done by the functions
6625         themselves.
6626
6627         * aot-compiler.c (compile_method): Only add wrappers referenced by
6628         the method if compiling with full AOT.
6629         (mono_compile_assembly): Error out if --aot=full is specified on
6630         a platform where it is not supported.
6631
6632         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6633         on ARM too.
6634
6635         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6636         AOT support.
6637
6638         * aot-runtime.c (load_named_code): Handle 
6639         mono_arm_throw_exception_by_token.
6640
6641         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6642
6643         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6644         unaligned.
6645
6646         * Makefile.am (fullaotcheck): Exit if a test fails.
6647
6648         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6649         on ARM.
6650         (mono_compile_assembly): Handle the assembler failing.
6651
6652         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6653         accepting subsections of .bss.
6654
6655         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6656         was optimized away.
6657
6658         * aot-compiler.c: Remove some unused includes.
6659         
6660         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6661         now in MonoImageWriter.
6662
6663         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6664         code sequence which matches a non-virtual call. Fixes #472654.
6665
6666 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6667
6668         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6669         xdebug code.
6670         
6671         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6672         use the image/dwarf writers directly.
6673
6674         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6675         field.
6676
6677         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6678         MonoDwarfWriter.
6679
6680         * image-writer.h: Fix some typos.
6681
6682         * dwarfwriter.h dwarfwriter.c: New files.
6683         
6684         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6685         separate module.
6686
6687         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6688         argument to return unwind info.
6689
6690         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6691
6692         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6693         
6694         * aot-runtime.c (decode_method_ref): Add a case for 
6695         MONO_AOT_METHODREF_WRAPPER_NAME.
6696
6697         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6698         for AOT.
6699
6700         * aot-compiler.c (encode_method_ref): Use the new constants.
6701
6702         * aot-runtime.c (decode_method_ref): Ditto.
6703
6704         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6705         be compiled, not the icall itself.
6706
6707 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6708
6709         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6710         using decode_method_ref ().
6711
6712         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6713         convert it to an in32. Fixes #475859.
6714
6715         * arrays.cs: Add a test.
6716
6717 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6718
6719         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6720         OP_LCONV_TO_U2.
6721
6722         * basic-long.cs: Add a test.
6723
6724 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6725
6726         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6727         remove the frame pointer in leaf methods which don't receive any
6728         arguments, don't throw exceptions and don't do dynamic stack
6729         allocations.
6730
6731 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6732
6733         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6734         the fail_tramp changes. Hopefully fixes #475132.
6735
6736 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6737
6738         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6739         instead of mono_metadata_signature_dup_full.
6740
6741 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6742
6743         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6744         for processing jump tables. Fixes #473787.
6745
6746 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6747
6748         * mini-generic-sharing.c: mini_method_get_context() just calls
6749         mono_method_get_context_general() now.
6750
6751         * mini.c, mini.h: Moved get_object_generic_inst(),
6752         construct_object_context_for_method() and
6753         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6754
6755 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6756
6757         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6758         basic block fell through to its successor bblock without a branch. Fixes
6759         #474718.
6760
6761         * iltests.il.in: Add a test.
6762         
6763         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6764         (can_encode_patch): We can now handle arrays of generic parameters and
6765         array methods.
6766
6767         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6768
6769         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6770         the AOT file to avoid some #ifdefs in aot-runtime.c
6771
6772         * mini.h: Bump AOT file format version.
6773
6774 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6775
6776         * Makefile.am (fullaotcheck): Make this run the tests.
6777
6778         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6779
6780 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6781
6782         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6783         individually.  Fixes #473482.
6784
6785 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6786
6787         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6788
6789 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6790
6791         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6792         (mono_compile_assembly): Hush compile warnings about
6793         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6794         code path.
6795
6796 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6797
6798         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6799
6800         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6801
6802         * aot-compiler.c: Fix arm support.
6803
6804         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6805         img_writer_emit_unset_mode () function.
6806
6807         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6808         (mono_unwind_get_dwarf_pc_reg): Ditto.
6809
6810         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6811         Move almost all platform specific code to a set of arch_ functions, 
6812         and document them to ease porting.
6813         
6814         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6815
6816         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6817
6818         * aot-compiler.c: Extract the image writing functionality into a separate
6819         module to reduce the size of this file.
6820
6821 2009-02-09  Geoff Norton  <gnorton@novell.com>
6822
6823         * mini-s390.c: Fix the signature of emit_sig_cookie.
6824
6825 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6826
6827         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6828
6829         * aot-runtime.c (is_shared_got_patch): Ditto.
6830
6831         * aot-runtime.c (load_named_code): Cope with the fact that 
6832         decode_got_entry () won't decode the patch fully if its corresponding got
6833         entry is already filled.
6834         
6835         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6836         Initialize *ji.
6837         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6838
6839         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6840         as the moving pointer instead of 'buf' for consistency with the rest of the
6841         codebase.
6842         (mono_arch_create_monitor_exit_trampoline): Ditto.
6843
6844         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6845         generic_class_init trampolines.
6846         (add_generic_class): Extract some code from add_generic_instances () into a
6847         separate function so it can be called from other places too.
6848         (compile_method): Call add_generic_class () for the classes of inflated methods
6849         referenced by the method.
6850         (can_encode_patch): Allow references to generic parameters.
6851
6852         * aot-runtime.c: Add support the patches required by the new trampolines.
6853         
6854         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6855         support.
6856
6857         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6858         full-aot support.
6859
6860         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6861         this from get_throw_pending_exception, make the signature full aot compatible.
6862
6863         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6864
6865         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6866
6867         * exceptions.cs: Add a test.
6868
6869 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6870
6871         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6872         use the DWARF_DATA_ALIGN constant instead.
6873
6874         * exception-<ARCH>.c: Update after the above change.
6875
6876         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6877         dwarf unwinder.
6878
6879         * mini-arm.c: Enable the dwarf unwinder.
6880
6881         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6882         instead of mono_class_setup_vtable ().
6883
6884 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6885
6886         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6887         dwarf unwinder.
6888
6889         * mini-x86.h: Enable the dwarf unwinder.
6890
6891 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6892
6893         Fix mcs/tests/test-7.cs
6894         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6895         2009-02-03.
6896
6897 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6898
6899         * mini.c (print_jit_stats): Remove some unused statistics.
6900
6901 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6904
6905 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6906
6907         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6908         the method we get from mono_object_get_virtual_method() because
6909         that function does it properly, now.
6910
6911 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6914         opcodes. Fixes #472775.
6915
6916 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6917
6918         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6919         fact that mono_find_jit_info() sometimes returns the context
6920         corresponding to the jit info in new_ctx.  Fixes #472600.
6921
6922 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6923
6924         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6925         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6926         klass->enum_basetype directly.
6927
6928         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6929         enum subtypes.
6930
6931         * unwind.c: Avoid 0 sized arrays.
6932
6933 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6934
6935         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6936         size on systems with 64k pages. Fixes #471389.
6937
6938 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6939
6940         Contributed under the terms of the MIT/X11 license by Steven
6941         Munroe <munroesj@us.ibm.com>.
6942
6943         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6944         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6945         necessary.
6946
6947 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6948
6949         Contributed under the terms of the MIT/X11 license by Steven
6950         Munroe <munroesj@us.ibm.com>.
6951
6952         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6953         comparison fix.
6954
6955         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6956         The trampoline can be longer on PPC64.
6957
6958 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6959
6960         Contributed under the terms of the MIT/X11 license by Steven
6961         Munroe <munroesj@us.ibm.com>.
6962
6963         * mini-ppc.c: Compiler warning fixes and trivial code
6964         simplifications.
6965
6966 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6967
6968         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6969         ins->dreg which could be a hardware register, not a vreg.
6970
6971         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6972         
6973         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6974         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6975
6976         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6977         
6978         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6979         ->dreg, that is not the vreg we are looking for.
6980
6981         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6982
6983         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6984         LIVERANGE_END.
6985
6986         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6987         strange crashes.
6988
6989 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6990
6991         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6992
6993         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6994         the line diff is 0.
6995
6996         * aot-compiler.c: Add xdebug support on x86.
6997
6998         * unwind.c: Add x86 support.
6999         
7000         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7001         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7002
7003         * mini.c (mini_method_compile): Ditto.
7004         
7005         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7006         the variable index.
7007
7008         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7009         which mimic .push_section/.pop_section in GAS.
7010         
7011         * aot-compiler.c: Emit precise live range information for variables.
7012
7013         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7014
7015         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7016         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7017         them.
7018
7019         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7020         the live ranges of variables.
7021
7022         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7023         of the variable in terms of native offsets.
7024
7025 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7026
7027         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7028         
7029 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7030
7031         Contributed under the terms of the MIT/X11 license by Steven
7032         Munroe <munroesj@us.ibm.com>.
7033
7034         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7035         order (offset then base reg) for ppc_load_multiple_regs.
7036         (emit_save_saved_regs) Correct operand order for
7037         ppc_store_multiple_regs.
7038         (mono_arch_get_call_filter): Correct operand order for
7039         ppc_load_multiple_regs.
7040
7041         * mini-ppc.c (emit_memcpy): Fix operand order for
7042         ppc_load_reg_update and ppc_store_reg_update.
7043         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7044         (mono_arch_emit_epilog): Correct operand order for
7045         ppc_load_multiple_regs.
7046
7047         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7048         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7049
7050 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7051
7052         * cpu-ppc64.md: Fixed storer4_memindex length.
7053
7054 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7055
7056         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7057         line number info.
7058         
7059         * aot-compiler.c (emit_line_number_info): Optimize this.
7060
7061 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7062
7063         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7064         
7065         * aot-compiler.c: Add debug info for methods without debug info by
7066         emitting an IL file and having the line number info referencing that file.
7067
7068         * aot-compiler.c: Optimize the size of the generated line number info.
7069
7070         * aot-compiler.c: Emit line number info in xdebug mode.
7071
7072         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7073         million arguments.
7074
7075 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7076
7077         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7078
7079         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7080         is used.
7081
7082 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7083
7084         * basic-calls.cs: Test for the weird crash found on arm.
7085         
7086 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7087
7088         * cpu-arm.md: Increase the size of storer8_membase_reg and
7089         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7090
7091         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7092         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7093         reg to LR otherwise we'll be loading/storing from just the offset.
7094
7095 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7096
7097         Question: if we are storing gint32's inside the "*native_offset",
7098         should we change the signature to "gint32 *native_offset" to
7099         ensure that we do not have type definition problems?
7100         
7101         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7102         an int * as this is what the other function expects, causes
7103         problems with Freescale's compiler that defined int32_t to be a
7104         long and makes int incompatible 
7105
7106 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7107
7108         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7109         filename conflict with bjam.
7110
7111 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7112
7113         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7114         as it might use decomposed ops.
7115
7116 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7117
7118         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7119
7120         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7121         is defined.
7122
7123         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7124
7125         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7126         offsets.
7127
7128         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7129         way registers are stored in MonoContext on arm.
7130
7131         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7132         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7133
7134         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7135
7136         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7137
7138         * mini.c (mini_init): Register mono_isfinite.
7139
7140         * jit-icalls.c (mono_isfinite): New jit icall.
7141
7142         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7143         
7144         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7145         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7146         the parent frame.
7147
7148 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7149
7150         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7151         separate frame and stack pointers, so we must use FP to find the register
7152         spill area.
7153         The FP reg is retrieved from the MonoContext::regs array.
7154
7155 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7156
7157         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7158         as FPA requires it.
7159
7160 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7161
7162         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7163         return R4 and R8 when not running under softfloat.
7164
7165         Fixes basic-calls.exe
7166
7167 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7168
7169         * mini-arm.c: Implement some overflow opcodes.
7170
7171 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7172
7173         * ssa.c: handle another alloca.h
7174
7175         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7176         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7177         MONO_ARCH_USE_SIGACTION. 
7178
7179         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7180         capability defines.
7181
7182         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7183
7184         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7185         PPC targets as sigaction does not exist on all platforms, define
7186         this on a per-platform basis.
7187
7188         Instead of erroring out if the platform is not defined, include
7189         mini-ppc-os.h, and expect that the OS specific setting provides
7190         the required information.   
7191
7192 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7193
7194         * aot-compiler.c: Fix --enable-minimal=aot.
7195
7196 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7197
7198         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7199         previous change.
7200
7201 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7202
7203         * exceptions-arm.c: Fix warnings.
7204
7205         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7206         ARM.
7207
7208         * mini-x86.c: Fix --enable-minimal=jit build.
7209
7210         * mini.c: Really fix --enable-minimal=jit build.
7211         
7212         * mini.c (construct_object_context_for_method): Move this outside
7213         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7214
7215         "Backported" of r124984 from 2.0 branch.
7216         
7217         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7218
7219         "Backport" of r124977 + r124978 from 2.0 branch.
7220         
7221         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7222         to avoid calling mono_exception_from_token () from the throw trampoline.
7223         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7224         for throwing corlib exceptions, this fixes full-aot support for corlib
7225         exceptions.
7226
7227         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7228
7229 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7230
7231         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7232         part of the changes to split the code in mini into operating
7233         system specific files.
7234
7235         This patch was done by copying mini.c to the respective files to
7236         preserve SVN history.
7237
7238 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7239
7240         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7241
7242 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7243
7244         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7245         remoting-invoke-with-check wrappers of shared methods.
7246
7247         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7248
7249 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7250
7251         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7252         optimization if the top of stack is the last instruction in the
7253         bblock.  Otherwise it might have been used after its definition.
7254         Fixes #469742.
7255
7256 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7257
7258         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7259         method as well when get_vcall_slot () fails to match a code sequence.
7260
7261         * mini-arm.c: Fix the android build, which doesn't have
7262         __aeabi_read_tp.
7263
7264 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7265
7266         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7267         the s390x build.
7268
7269 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7270
7271         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7272
7273 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7274
7275         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7276         and put its id into jinfo->used_regs. This is only used on amd64,
7277         which is currently the only platform generating unwind info.
7278
7279         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7280         the dwarf unwinder. This is required to correctly handle async exceptions
7281         like thread abort and stack overflows, which can happen while a method
7282         is in the middle of its prolog or epilog.
7283         
7284         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7285         the unwind info belonging to an AOTed method.
7286
7287         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7288         into cfg->unwind_ops.
7289         
7290         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7291
7292         * mini.c (mini_init): Call mono_unwind_init ().
7293         (mini_cleanup): Call mono_unwind_cleanup ().
7294
7295         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7296         unwind info to be shared between methods.
7297
7298         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7299         saved in the LMF.
7300
7301         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7302         get_throw_pending_exception () to avoid initialization races.
7303
7304         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7305         mono_arch_exceptions_init () function.
7306
7307         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7308
7309 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * mini.c (mono_get_domain_intrinsic): New helper function.
7312         (mono_get_thread_intrinsic): Ditto.
7313
7314         * mini-arm.c mini-ia64.c: Use the new helper functions.
7315         
7316         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7317         the last constrained_call change, since it is needed in the non-AOT
7318         case as well.
7319
7320         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7321         
7322         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7323         mono_get_lmf_addr () on arm eabi linux.
7324
7325 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7328         code sequence which matches a non-virtual call.
7329
7330 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7331
7332         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7333         stack pointer (r1).
7334
7335 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7336
7337         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7338         runtime-invoke wrappers, since they are also shared based on signature.
7339
7340 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7341
7342         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7343         info from the (correct) context.
7344
7345 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7346
7347         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7348         
7349         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7350         using dwarf unwinding info. Not yet used.
7351
7352         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7353
7354 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7355
7356         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7357         descriptors.
7358
7359         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7360         special case and handle mono_arch_delegate_invoke_impl() returning
7361         function descriptors.
7362
7363         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7364         trampolines return function descriptors, too.
7365
7366 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7367
7368         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7369         out_of_line optimization.
7370
7371 2009-01-21  Martin Baulig  <martin@ximian.com>
7372
7373         * mini.h
7374         (MonoCompile): Added `disable_deadce_vars' to disable removing
7375         unused variables.
7376
7377         * mini.c
7378         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7379         inside the debugger.
7380
7381         * liveness.c (mono_analyze_liveness): Don't remove any unused
7382         variables if `cfg->disable_deadce_vars' is set.
7383
7384 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7385
7386         * method-to-ir.c: Only apply exception constructor optimization if
7387         the the method actually belongs to an exception class.  Fixes
7388         #467456.
7389
7390 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7391
7392         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7393         change inside a #ifdef __mono_ppc64__.
7394
7395         * aot-compiler.c (compile_method): Remove the previous limitation.
7396
7397         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7398         on type variables in AOTed code.
7399         
7400         * aot-compiler.c (compile_method): Skip generic methods having type 
7401         constraints on their generic parameters.
7402
7403         * aot-compiler.c (compile_method): Check for methods which cannot be
7404         encoded inside RGCTX_FETCH patches as well.
7405
7406         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7407         build.
7408
7409 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7410
7411         * method-to-ir.c: Force the vtable variable in shared generic code
7412         for the case that they might show up on a stack trace where they
7413         are needed.
7414
7415         * mini-exceptions.c: Save and use generic sharing info as well as
7416         IP in stack traces to resolve shared generic instantiations.
7417
7418 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7419
7420         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7421         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7422
7423 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7424
7425         * method-to-ir.c: Do generic sharing for array constructors.
7426
7427 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7428
7429         * mini-exceptions.c (mono_print_thread_dump): Add information
7430         about the thread state using wapi_current_thread_desc.
7431
7432 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7433
7434         * basic-simd.cs: Tests for the new constructors. 
7435
7436 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7437
7438         * mini-ops.h: Added OP_EXPAND_*
7439
7440         * cpu-x86.md: Same.
7441
7442         * mini-x86.c (mono_arch_output_basic_block): Same.
7443         
7444         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7445
7446 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7447
7448         * iltests.il.in: Add a test for #467385.
7449
7450 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7451
7452         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7453         thread been cleaned up is not the same currently in execution.
7454
7455         Fixes appdomain-unload crashes on windows, osx and linux variants
7456         without the __thread keyword.
7457
7458 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7459
7460         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7461         (koush@koushikdutta.com). Implement this for android.
7462
7463         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7464         begins with a digit.
7465
7466         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7467         mono_marshal_get_write_barrier ().
7468
7469 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7470
7471         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7472         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7473         that pass them on a register pair.
7474
7475         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7476         test was crashing due to that.
7477
7478 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7479
7480         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7481         trampoline code. Include ucontext.h only if available.
7482
7483 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7484
7485         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7486         and doesn't check whether it's sharable, like it was before
7487         removing the shared generics hash.  This brings IronPython
7488         performance back to what it was before that change.
7489
7490 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7491
7492         * method-to-ir.c: Handle delegate invocation optimization earlier,
7493         otherwise it would be handled (much more slowly) by the
7494         final/sealed optimization.
7495
7496 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7497
7498         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7499         domain is not set. Fixes #465864.
7500
7501 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7502
7503         * method-to-ir.c: Don't stop sharing of generic methods with catch
7504         clauses - we already handle those.
7505
7506 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7507
7508         * mini.c, mini.h: lookup_generic_method() is now
7509         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7510         making the shared_generics_hash obsolete.
7511
7512 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7513
7514         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7515         use the red zone.  Make room on the stack first and then use it,
7516         not the other way around.
7517
7518 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7519
7520         * mini.c (mini_init): Call mono_xdebug_init ().
7521
7522         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7523
7524 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7525
7526         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7527
7528         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7529         trampolines.
7530
7531         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7532         debug+unwind info for trampolines.
7533
7534         * mini.c (mono_create_unwind_op): New helper function.
7535
7536         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7537
7538 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7539
7540         * aot-compiler.c: Fix the build.
7541
7542 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7543
7544         * Makefile.am: Update dtrace-prelink.sh location.
7545
7546 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7547
7548         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7549         optimization. Fixes #464520.
7550
7551 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7552
7553         * mini-amd64.c : Adding code to save/restore non-volatile registers
7554            on Winx64.
7555
7556         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7557           registers on Winx64.
7558
7559         Contributed under MIT/X11 license.
7560
7561 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7562
7563         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7564         __GNUC_MINOR__ which can break when the major version changes.
7565
7566 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7567
7568         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7569
7570 2009-01-07  Geoff Norton  <gnorton@novell.com>
7571
7572         * helpers.c:  Allow mono -v -v -v to work on darwin.
7573
7574 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7575
7576         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7577           pattern. 
7578
7579         Contributed under MIT/X11 license.
7580
7581 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7582
7583         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7584         instead of directly accessing type->data.klass. Fixes #462016.
7585         (mono_allocate_stack_slots_full): Ditto.
7586
7587         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7588         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7589
7590         * aot-compiler.c (emit_plt): Fix ARM build.
7591
7592 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7593
7594         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7595         
7596         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7597         change.
7598
7599         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7600         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7601         #463357.
7602
7603         * iltests.il.in: Add a regression test.
7604
7605 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7606
7607         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7608
7609 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7610
7611         * basic-simd.cs: Add a regression test for #462457.
7612
7613 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7614
7615         * mini-ops.h: Add a definition of XPHI.
7616
7617         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7618
7619         * ssa.c (op_phi_to_move): Handle XPHI.
7620
7621         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7622
7623         Fixes #462457
7624
7625 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7626
7627         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7628
7629 2008-12-31  Geoff Norton  <gnorton@novell.com>
7630
7631         * mini-ppc.c: The prolog size allocated can be too small for darwin
7632         ppc32 under certain circumstances.  Also fix a small logic bug.
7633
7634 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7635
7636         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7637         while loading AOT methods.
7638
7639         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7640         since only the former is nulled out after a successful cast. This prevents
7641         crashes with rethrown exceptions when using --debug=casts.
7642
7643 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7644
7645         * mini.h: New macro for checking whether a method is final,
7646         i.e. whether the method or its class is marked final.
7647
7648         * method-to-ir.c: Use the new macro for all final-checks
7649         consistently.  Fixes the crash in the System.ServiceModel tests.
7650
7651 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7652
7653         * mini-exceptions.c (get_exception_catch_class): Corrected another
7654         overly strict assertion.
7655
7656 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7657
7658         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7659         Clobbering it is not allowed because the caller might use it as
7660         the vtable register in the interface call.
7661
7662 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7663
7664         * mini-exceptions.c (get_exception_catch_class): Corrected an
7665         overly strict assertion.
7666
7667 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7668         
7669         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7670
7671         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7672
7673         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7674
7675         * cpu-mips.md: correct lengths for certain long_ opcodes.
7676
7677         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7678
7679         * 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().
7680         
7681 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7682
7683         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7684         
7685 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7686         
7687         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7688         
7689 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7690
7691         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7692         next basic block.
7693         
7694 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7695
7696         * 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
7697
7698         * 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)
7699         
7700 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7701         
7702         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7703         
7704 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7705
7706         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7707         gshared code. Fixes #458947.
7708
7709         * generics.cs: Add a test.
7710
7711 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7712         
7713         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7714         
7715         * mini-mips.c: first pass n32 code generation.
7716
7717         * mini-mips.h: datatypes and defines for n32 support.
7718
7719         * exceptions-mips.c: first pass n32 code generation.
7720         
7721         * tramp-mips.c: first pass n32 code generation.
7722         
7723         * cpu-mips.md: add long_ opcodes.
7724         
7725 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7726
7727         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7728
7729         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7730         
7731         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7732         
7733         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7734
7735         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7736
7737         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7738
7739         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7740
7741         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7742
7743         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7744
7745 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7748
7749 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7750
7751         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7752
7753 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7754
7755         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7756         descriptors for helper functions directly in front of the code.
7757
7758 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7759
7760         * method-to-ir.c: Removed an unnecessary assertion.
7761
7762 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7763
7764         * method-to-ir.c: Merge SGEN changes from the old JIT.
7765
7766 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7767
7768         * driver.c (compile_all_methods_thread_main): Handle failure of
7769         mono_get_method ().
7770
7771 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7772
7773         * mini-ppc.c: Merged with mini-ppc64.c.
7774
7775         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7776
7777         * Makefile.am: Use the same sources for PPC and PPC64.
7778
7779         * mini-ppc64.c: Removed.
7780
7781 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7782
7783         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7784         code to mono_bb_is_fall_through.
7785         
7786         * branch-opts.c (mono_remove_critical_edges): Same.
7787
7788 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7789
7790         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7791         expect that an OP_BR_REG will be there.
7792
7793 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7794
7795         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7796         for the many branch ops. The original check miss OP_BR_REG.
7797
7798         Fixes #457574.
7799         
7800 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7801
7802         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7803
7804 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7805
7806         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7807         while holding the aot lock.
7808
7809 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7810
7811         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7812         
7813 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7814
7815         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7816           to release all runtime callable wrappers held by the runtime.
7817
7818         Contributed under MIT/X11 license.
7819
7820 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7821
7822         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7823           for Winx64.
7824
7825         Contributed under MIT/X11 license.
7826
7827 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7830         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7831
7832 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7833
7834         * cpu-mips.md: fix ckfinite length
7835
7836         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7837         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7838         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7839         
7840 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7841
7842         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7843         
7844 2008-12-08  Geoff Norton  <gnorton@novell.com>
7845
7846         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7847         size by 8 bytes as well.
7848
7849 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7850
7851         * basic-simd.cs: Fix method names for Vector16b.
7852         
7853 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7854
7855         * basic-simd.cs: Fix method names for Vector16sb.
7856
7857 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7858
7859         * basic-simd.cs: Fix method names for Vector8us.
7860         
7861 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7862
7863         * basic-simd.cs: Fix method names for Vector8s.
7864         
7865 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7866
7867         * basic-simd.cs: Fix method names for Vector4ui.
7868
7869 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7870
7871         * basic-simd.cs: Fix method names for Vector2l.
7872
7873 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7874
7875         * basic-simd.cs: Fix method names for Vector2d.
7876
7877 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7878
7879         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7880         that are extension methods.
7881
7882 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7883
7884         * basic-simd.cs: Fix method names for Vector4f.
7885
7886 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7887
7888         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7889         as such. Fixes #456669.
7890
7891 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7892
7893         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7894         
7895 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7896
7897         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7898         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7899         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7900         (mips_adjust_stackframe): handle FP spills
7901                 
7902         * mini-ops.h: add mips_mtc1_s2
7903         
7904         * cpu-mips.md: add mips_mtc1_s2
7905         
7906 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7907
7908         * unwind.c: New file, move the unwind info encoding functions here from
7909         aot-compiler.c, so they could be used at runtime too.
7910
7911 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7912
7913         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7914         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7915         
7916 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7917
7918         * mini-mips.c: cleanup warnings
7919         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7920         (mips_adjust_stackframe): handle case of taking the address of stack locals
7921         
7922 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * aot-compiler.c: Implement a few functions missing from the asm writer.
7925         (emit_method_code): Only write symbols for methods when using the bin
7926         writer, since the assembler can't deal with the characters in our method
7927         names.
7928
7929         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7930
7931         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7932         call.
7933
7934         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7935         a bit to also restore %rax.
7936
7937 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7938
7939         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7940
7941 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7942
7943         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7944         arguments.
7945
7946 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7947
7948         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7949
7950         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7951         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7952
7953         * exceptions-ppc64.c: Removed.
7954
7955         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7956
7957 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7958
7959         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7960         tramp-ppc64.c.
7961
7962         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7963
7964         * tramp-ppc64.c: Removed.
7965
7966 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7967
7968         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7969         the TYPESPEC table.
7970
7971 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7972
7973         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7974
7975         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7976         mini-ppc.h instead of mini-ppc64.h.
7977
7978         * mini-ppc64.h: Removed.
7979
7980 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7981
7982         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7983         
7984         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7985         
7986 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7987
7988         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7989         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7990         code easier.
7991
7992 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7993
7994         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7995
7996 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7997
7998         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7999
8000 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8001
8002         * basic-simd.cs: Tests for operator == and != on Vector4f.
8003
8004 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8005
8006         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8007
8008         * simd-intrinsics.c: Kill useless enum.
8009
8010 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8011
8012         * cpu-mips.md: add long_conv_to_ovf_i4_2
8013         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8014
8015 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8016
8017         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8018         
8019         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8020
8021 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8022
8023         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8024         
8025 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8026
8027         * basic-simd.cs: Add tests for new methods.
8028
8029 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8030
8031         * simd-intrinsics.c: Add support for operator == and !=
8032         on Vector4(u)i.
8033
8034         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8035
8036 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8037
8038         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8039
8040 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8041
8042         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8043
8044         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8045         MONO_PATCH_INFO_ICALL_ADDR.
8046
8047         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8048
8049         * aot-compiler.c: Resurrect full-aot support.
8050
8051 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8052
8053         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8054         
8055 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8056
8057         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8058         
8059 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8060
8061         * basic-simd.cs: Fix tests to work under ppc.
8062         Remove tests for methods that will be removed.
8063
8064 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8065
8066         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8067         generic type (via a typedef or typeref) correctly.
8068
8069 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8070
8071         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8072         diagnose an assertion failure.
8073
8074 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8075
8076         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8077         Fix trampoline size.
8078
8079         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8080         conversion opcodes are implemented natively instead via emulation.
8081
8082 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8083
8084         * cpu-mips.md: remove mips_xori
8085
8086         * mini-ops.h:  remove mips_xori
8087
8088         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8089
8090         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8091         
8092         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8093         
8094 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8095
8096         * cpu-mips.md: fix instruction lengths.
8097
8098         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8099
8100         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8101
8102         * mini-ops.h: fix slti / sltiu op profiles.
8103         
8104 2008-12-02  Martin Baulig  <martin@ximian.com>
8105
8106         * method-to-ir.c (mono_method_to_ir): Disable debugging
8107         information for the init locals block to make the debugger stop
8108         after all locals have been initalized.
8109
8110 2008-12-02  Martin Baulig  <martin@ximian.com>
8111
8112         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8113         running inside the debugger.
8114
8115 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8116
8117         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8118         is enabled.
8119
8120         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8121         alu->alu imm optimization which only shows if deadce is disabled.
8122
8123         * aot-compiler.c: Rename the function names for the binary and asm writers
8124         so they can coexist in the same process. Rework the xdebug code to use the
8125         asm writer. This avoids the need to call into the runtime to dump the
8126         debugging info. Add more debugging info for types.
8127
8128         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8129
8130         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8131         cpu description tables, they can't occur in cpu-<ARCH>.md.
8132
8133         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8134         the stack in CEE_LDFLDA. Fixes #450542.
8135
8136         * generics.cs: Add a new test.
8137
8138 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8139
8140         * mini-ops.h: updated MIPS opcodes
8141         * mini-mips.c: decompose long opts
8142         * mini-mips.h: decompose long opts
8143         
8144 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8145
8146         * cpu-mips.md: fix length on int_rem_un
8147         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8148         
8149 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8150
8151         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8152
8153         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8154
8155 2008-11-29  Martin Baulig  <martin@ximian.com>
8156
8157         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8158         mono_debug_using_mono_debugger() in addition to the
8159         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8160
8161 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8162
8163         * mini-ops.h: updated more MIPS opcodes
8164         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8165         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8166         
8167 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8168
8169         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8170
8171 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8172
8173         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8174         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8175         * mini-ops.h: correct selected mips opcode entries
8176         
8177 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8178
8179         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8180         make them work.
8181
8182 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8183
8184         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8185
8186 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8187
8188         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8189         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8190         * mini-mips.h: disable IMT
8191         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8192         
8193 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8194
8195         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8196
8197 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8198
8199         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8200
8201 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8204         consistency.
8205
8206 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8207
8208         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8209         for Set/GetVector aligned versions.
8210
8211 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8212
8213         * basic-simd.cs: Add tests for Get/SetVector.
8214
8215 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8216
8217         * mini.c: Removed g_slist_append_mempool().  Now in
8218         metadata/mempool.c.
8219
8220 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8221
8222         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8223         size properly and make the bounds check optional.
8224
8225         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8226         for SetVector and IsAligned.
8227
8228 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8229
8230         * mini.c: Remove unused mono_normalize_opcodes () function.
8231
8232 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8233
8234         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8235         using the new atomic add ops now.
8236
8237         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8238         add.
8239
8240 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8241
8242         * mini-ppc64.c: Several fixes.
8243
8244 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8245
8246         * cpu-mips.md: added jump_table
8247         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8248
8249 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8250
8251         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8252
8253 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8254
8255         * mini-ops.h: corrected a handful of MIPS opcodes.
8256
8257 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8258
8259         * aot-compiler.c: MIPS to use ELF writer
8260
8261 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8262
8263         * mini-codegen.c: remove MIPS specific assert.
8264
8265 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8266
8267         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8268         fixes.  PPC64 now passes most of the runtime regressions.
8269
8270 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8273         volatile intervals a bit.
8274
8275 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8276
8277         * basic-long.cs: New test case.
8278
8279 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8280
8281         * mini.c (mini_method_compile): Disable globalra for large methods for 
8282         now.
8283
8284         * regalloc2.c (order_moves): Add fp support.
8285
8286         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8287         source bblock ends with an OP_BR_REG.
8288
8289         * ratests.cs: Add a new test.
8290
8291 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8292
8293         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8294         sharing.  PPC64 now passes generics.exe.
8295
8296 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8297
8298         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8299
8300 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8301
8302         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8303         memory when mono_jit_info_table_find () can't find the method in the
8304         LMF case.
8305
8306         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8307         AOTed code too.
8308         
8309         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8310         writer too.
8311
8312 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8313
8314         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8315         Several fixes.  PPC64 now runs exceptions.exe and
8316         devirtualization.exe.
8317
8318 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8319
8320         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8321         arrays.exe and basic-math.exe.
8322
8323 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8324
8325         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8326         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8327
8328 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8329
8330         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8331
8332 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8333
8334         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8335
8336         * ir-emit.h: Move macros from method-to-ir.c to here.
8337
8338 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8339
8340         * mini-ops.h: Correct the long simd ops to use LREG.
8341
8342 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8343
8344         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8345         
8346         * mini-ops.h: Correct the dreg type of a few long opcodes.
8347
8348         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8349         Add netbsd support.
8350
8351 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8352
8353         * mini-ppc.c: remove negative stack references in epilog
8354         for platforms that don't support the red zone.
8355
8356 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8357
8358         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8359         point regs.  Now PPC64 passes basic-calls.exe.
8360
8361 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8362
8363         * basic-simd.cs: Add tests for accessors of Vector2l.
8364
8365 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8366
8367         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8368
8369         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8370         
8371         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8372
8373 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8374
8375         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8376         PPC64 passes basic-long.exe.
8377
8378 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8379
8380         * decompose.c: Decompose carry and overflow add on PPC64 like on
8381         other 64 bit archs.  Don't decompose sub at all on PPC64.
8382
8383         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8384         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8385         basic-long.exe.
8386
8387 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8388
8389         * basic-simd.cs: Add tests for accessors of Vector2d.
8390
8391 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8392
8393         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8394
8395         * cpu-x86.md: Same.
8396
8397         * mini-x86.c (mono_arch_output_basic_block): Same.
8398         
8399         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8400
8401 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8402
8403         * basic-simd.cs: Add tests for accessors of Vector4f.
8404
8405 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8406
8407         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8408
8409         * cpu-x86.md: Same.
8410
8411         * mini-x86.c (mono_arch_output_basic_block): Same.
8412         
8413         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8414
8415 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8416
8417         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8418
8419 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8420
8421         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8422
8423         * cpu-x86.md: Same.
8424
8425         * mini-x86.c (mono_arch_output_basic_block): Same.
8426         
8427         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8428
8429 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8430
8431         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8432
8433 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8434
8435         * simd-intrinsics.c: Enable setters for Vector16sb.
8436
8437 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8438
8439         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8440
8441         * cpu-x86.md: Same.
8442
8443         * mini-x86.c (mono_arch_output_basic_block): Same.
8444         
8445         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8446
8447 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8448
8449         * simd-intrinsics.c: Implement setter for Vector8us.
8450
8451 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8452
8453         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8454         for dead variables.
8455
8456 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8457
8458         * mini-ppc.c: remove references to the red zone in the prolog
8459         (for systems that don't support it).
8460
8461 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8462
8463         * cpu-ppc64.md: Fixed a few instruction lengths.
8464
8465         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8466         now.
8467
8468 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8469
8470         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8471         basic.exe now.
8472
8473 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8474
8475         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8476
8477 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8478
8479         * mini-ops.h: Added OP_INSERT_I2.
8480
8481         * cpu-x86.md: Same.
8482
8483         * mini-x86.c (mono_arch_output_basic_block): Same.
8484         
8485         * simd-intrinsics.c: Implement setter for Vector8s.
8486
8487         * simd-methods.h: Add the names of get setters of Vector8s.
8488
8489 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8490
8491         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8492         
8493         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8494         parameters.
8495
8496         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8497
8498 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8499
8500         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8501         for PPC64.  An empty program runs now.
8502
8503 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8504
8505         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8506
8507         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8508         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8509         info for JITted code is emitted into a shared library, loadable into gdb.
8510
8511 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8512
8513         * Makefile.am: Changes to build PPC64.
8514
8515         * mini-arch.h: Include mini-ppc64.h on PPC64.
8516
8517 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8518
8519         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8520         in PPC code up to r119147.
8521
8522 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8523
8524         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8525         cpu-ppc64.md: Changes for PPC64.
8526
8527         Based on code submitted by andreas.faerber@web.de at
8528         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8529         X11/MIT license.
8530
8531 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8532
8533         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8534         cpu-ppc64.md: Copied from the corresponding PPC files from
8535         r118846.
8536
8537 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8538
8539         * mini-ops.h: Added OP_ROUND.
8540
8541         * cpu-x86.md: Added round.
8542
8543         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8544
8545         * basic-math.cs: Added test_0_round to test rounding.
8546
8547         Contributed under MIT/X11 license.
8548
8549 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8550
8551         * aot-compiler.c : Fix the Winx64 build.
8552
8553         Contributed under MIT/X11 license.
8554
8555 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8556
8557         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8558         in OP_EXTRACT_R8 to avoid possible stack corruption.
8559
8560 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8561
8562         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8563
8564         * cpu-x86.md: Added extract_r8.
8565
8566         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8567         
8568         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8569         a couple of OP_EXTRACT_I4.
8570
8571         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8572
8573         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8574
8575 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8576
8577         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8578         and not 4.1. 
8579
8580 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8581
8582         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8583         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8584
8585         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8586         are not needed any more.
8587
8588         * mini.h: Remove the unused INS_LIST macros.
8589
8590         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8591         longer needed.
8592
8593         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8594         ir-emit.h.
8595
8596         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8597         mono_alloc_ireg () instead.
8598
8599         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8600         macros.
8601
8602         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8603         on amd64.
8604
8605         * aot-runtime.c (load_aot_module): Disable AOT when running under
8606         CAS.
8607
8608         * mini-amd64.h: Change the monitor fastpath defines to check for
8609         !PLATFORM_WIN32 so they work on *bsd too.
8610
8611         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8612
8613         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8614
8615         * mini.h (MonoCompile): Remove new_ir flag.
8616
8617         * regalloc.h regalloc.c: Remove unused code.
8618
8619         * cpu-*.md: Remove more unused opcodes.
8620
8621         * simple-cee-ops.h simple-mini-ops.h: Removed.
8622
8623         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8624         
8625 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8626
8627         * aliasing.h: Removed.
8628
8629         * *.c: Remove references to aliasing.h and inssel.h.
8630
8631         * mini.c: Remove additional unused functions.
8632
8633         * mini-ops.h cpu-*.md: Remove unused opcodes.
8634
8635 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8636
8637         Remove the old JIT code.
8638
8639         * inssel*.brg: Removed.
8640
8641         * ssa.c abcremoval.c aliasing.c: Removed.
8642
8643         * ssa2.c: Renamed to ssa.c.
8644
8645         * abcremoval2.c: Renamed to abcremoval.c.
8646
8647         * *.c: Removed all !cfg->new_ir code.
8648
8649         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8650         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8651
8652         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8653         
8654 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8657         to simplify the code and cut back on the number of global symbols in the AOT
8658         file.
8659         
8660         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8661
8662 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8663
8664         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8665         with the got/got_info tables.
8666
8667         * mini.h: Bump AOT file format version.
8668         
8669         * unwind.h: New file, contains definitions for stack unwinding.
8670
8671         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8672         to cfg->unwind_ops.
8673         
8674         * aot-compiler.c: Generalize the emitting of unwind information to use the
8675         information in cfg->unwind_ops.
8676
8677         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8678
8679         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8680         AOT method frames. Enable writing symbols for methods by default.
8681
8682 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8683
8684         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8685         and make it work with vectors of element sizes 1, 2 and 4.
8686
8687         * simd-intrinsics.c: Enable getter for all vectors with element size
8688         1, 2 or 4.
8689
8690         * simd-methods.h: Add the names of other getters.
8691
8692         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8693
8694         * cpu-x86.md: Same.
8695
8696         * mini-x86.c: Same.
8697
8698 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8699
8700         * mini-ppc.h: portability fix.
8701
8702 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8703
8704         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8705         buggy and will overwrite it.
8706
8707 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8708
8709         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8710         Use it to emit local symbols for all methods so AOTed methods show up with
8711         their full name in gdb/valgrind output.
8712
8713 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8714
8715         * mini-ppc.c: portability fixes.
8716
8717 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8718
8719         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8720         entries out of the if (!generic_shared...) code so it is always done.
8721         (mono_class_init_trampoline): Do the patching when running under valgrind
8722         too, newer versions of valgrind have no problems with it.
8723
8724 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8725
8726         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8727         further sections.
8728
8729 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8730
8731         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8732         filters.
8733
8734 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8735
8736         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8737
8738 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8739
8740         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8741
8742         * cpu-x86.md: Same.
8743
8744         * mini-x86.c: Same.
8745
8746         * simd-intrinsics.c: Same.
8747
8748 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8749
8750         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8751
8752 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8753
8754         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8755         to work with more Vector types.
8756
8757 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8758
8759         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8760         store the elemens directly instead of using and intermediate.
8761
8762 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8763
8764         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8765
8766         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8767         to preserve %eax for aot plt trampolines.
8768
8769         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8770         (encode_method_ref): Flag synchronized methods so they won't go through
8771         the AOT trampoline.
8772
8773         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8774         wrappers.
8775
8776         * cpu-ia64.md (jmp): Increase max length.
8777
8778 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8779
8780         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8781         open generic classes.
8782
8783         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8784
8785         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8786         box+brtrue optimization since it causes test failures on x86.
8787
8788 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8789
8790         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8791
8792         * cpu-x86.md: Same.
8793
8794         * mini-x86.c: Same.
8795
8796         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8797         for simd ctor values. 
8798
8799         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8800         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8801
8802 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8803
8804         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8805         LogicalRightShift.
8806
8807         * simd-instrincs.c: Same.
8808
8809         * basic-simd.cs: Same.
8810
8811 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8812
8813         * ratests.cs: Add more tests.
8814
8815         * regalloc2.c (add_spill_code): Handle more corner cases.
8816
8817 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8818
8819         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8820         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8821         both the source an destination of an instruction.
8822
8823 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8824
8825         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8826         wapihandles.c: more portability changes.
8827
8828 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8829
8830         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8831         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8832         safe to execute in a signal handler and the kernel provides better
8833         the info in /proc/self/smaps. Avoid the assert on sigaction during
8834         cleanup.
8835
8836 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8839         do the bblock linking hack if it is actually needed.
8840
8841         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8842         up linking.
8843
8844         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8845         crash problem is fixed.
8846
8847         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8848         bblocks.
8849
8850         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8851         for catch clauses.
8852         (mini_method_compile): Set the starting value of next_vreg to 
8853         MAX_IREGS + MAX_FREGS when using globalra.
8854
8855         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8856         filter clauses with BB_EXCEPTION_HANDLER.
8857
8858         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8859
8860 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8861
8862         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8863         space for stdcall.  Fixes regressions on Win32.
8864
8865 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8866
8867         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8868         bblocks.
8869         (linear_scan): Remove an assert which doesn't seem to be needed.
8870
8871         * local-propagation.c (mono_local_deadce): Avoid a call to
8872         MONO_DELETE_INS which would screw up the instruction linking.
8873
8874         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8875
8876         * regalloc2.c: Upgrade to work the current JIT code.
8877
8878 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8879
8880         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8881         case.
8882
8883         * aot-runtime.c: Remove some dead code.
8884
8885         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8886         consistency.
8887         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8888
8889         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8890         trampolines using sscanf since atoi doesn't work on large unsigned values.
8891
8892         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8893         Initialize code_size.
8894
8895 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8896
8897         * method-to-ir.c (mini_emit_inst_for_method): Make
8898         Interlocked.CompareExchange work for Int arguments on 32 bit
8899         archs, as well.
8900
8901 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8902
8903         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8904
8905 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8906
8907         * main.c Fix MSVC build.
8908
8909         Contributed under MIT/X11 license.
8910
8911 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8912
8913         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8914         alignment larger than 8 bytes are aligned correctly, too.
8915
8916         * mini.c: Honor the min_align field of MonoClass when laying out
8917         the stack.
8918
8919 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8920
8921         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8922
8923         * aot-compiler.c (emit_plt): Fix a warning.
8924         
8925         * aot-compiler.c: Implement ARM support in the binary writer.
8926
8927 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8928
8929         * basic-simd.cs: Add test for getter with byref arg.
8930         Fix the naming of a few tests.
8931         Add missing checks to a test.
8932
8933 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8934
8935         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8936
8937         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8938         most of the full-aot support for monitor enter/exit trampolines.
8939
8940         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8941         enter/exit trampoline creation functions.
8942
8943         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8944         make dist.
8945
8946 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8947
8948         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8949         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8950         implement the needed functionality without adding crap to the runtime.
8951
8952 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8953
8954         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8955         non-x86 builds.
8956
8957         * mini.c (mono_build_date): New global version holding the build date in
8958         string format.
8959         
8960         * Makefile.am (buildver.c): Generate a file containing the build date.
8961
8962         * main.c: Set the build date from the generated file.
8963
8964         * mini.c (mono_get_runtime_build_info): New helper function returning build
8965         information in a string format.
8966         
8967         * driver.c (mono_main): Print the build date in --version.
8968
8969         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8970         file when the bind-to-runtime-version option is used.
8971
8972 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8973
8974         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8975
8976 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8977
8978         * simd-methods.h: Rename prefetch methods.
8979
8980         * simd-intrinsics.c: Same.      
8981
8982 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8983
8984         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8985         sizes.
8986
8987 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8988
8989         * aot-compiler.c: Use the bundled elf header files instead of depending on
8990         the system one.
8991         
8992         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8993         mempool.
8994
8995         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8996         on every call.
8997
8998 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8999
9000         * cpu-x86.md: Add store nta ops.
9001
9002         * mini-ops.h: Same.
9003
9004         * mini-x86.c: Same.
9005
9006         * mini.h: Add an enum for simd prefetch modes.
9007
9008         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9009         of store. Use the changed code to support store nta.
9010
9011         * simd-intrinsics.c: Add prefetch ops for all vector types.
9012
9013 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9014
9015         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9016         threads.
9017         
9018         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9019         names.
9020
9021         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9022         trampolines.
9023
9024 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9025
9026         * mini-x86.c: Fixed commit.
9027
9028 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9029
9030         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9031
9032 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9033
9034         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9035         and MONITOR_EXIT, for the ASM fastpaths.
9036
9037         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9038         available.
9039
9040         * mini.c, patch-info.h: Signature and patch infos for
9041         Monitor.Enter/Exit trampolines.
9042
9043         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9044
9045         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9046         Monitor.Enter/Exit ASM fastpath for Linux.
9047
9048 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9049
9050         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9051
9052         * objects.cs: Add a new test.
9053         
9054         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9055
9056         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9057         if MONO_LOG_LEVEL is set.
9058
9059         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9060
9061         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9062
9063         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9064         
9065         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9066         of file offsets. Align the sections belonging to the data segment to 
9067         PAGESIZE.
9068
9069 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9070
9071         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9072         elf.h. Port it to amd64.
9073
9074 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9075
9076         * driver.c: Enable SIMD by default.
9077
9078 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9079
9080         * cpu-x86.md: Add prefetch op.
9081
9082         * mini-ops.h: Same.
9083
9084         * mini-x86.c: Same.
9085
9086         * mini.h: Add an enum for simd prefetch modes.
9087
9088         * simd-methods.h: Add prefetch function names.
9089
9090         * simd-intrinsics.c: Add prefetch ops for all vector types.
9091
9092 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9093
9094         * aot-compiler.c (emit_bytes): Speed this up a little.
9095
9096 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * aot-compiler.c: Add JIT time etc. statistics.
9099         
9100         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9101
9102         * mini.h (MonoCompile): Add 'got_offset' field.
9103
9104         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9105         method_got_offsets array.
9106
9107         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9108         wrappers.
9109
9110         * aot-compiler.c (compile_method): Add generic method instances referenced
9111         by the method to the list of methods to be compiled, this is required so if
9112         A<T> references B<T>, and another assembly references A<int>, then it will
9113         also get a copy of B<int>.
9114
9115         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9116         when checking for monitor enter/exit.
9117
9118 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9119
9120         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9121         for Monitor.Enter and Monitor.Exit if enabled.
9122
9123         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9124         Solaris.
9125
9126 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9127
9128         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9129         of an OP_MOVE. Fixes #440046.
9130
9131         * basic-long.cs: Add a new test.
9132
9133 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9134
9135         * mini.h: Add synchronization note for the managed counter-part.
9136
9137         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9138         returns the simd caps of the current cpu.
9139
9140 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9141
9142         * basic-simd.cs: Remove Console.WriteLine.
9143
9144 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9145
9146         * basic-simd.cs: New tests for Vector2ul.
9147
9148 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9149
9150         * simd-intrinsics.c: Add new vector type Vector2ul.
9151
9152 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9153
9154         * basic-simd.cs: New tests for Vector2l.
9155
9156 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9157
9158         * cpu-x86.md: Add long version of most packed int ops.
9159
9160         * mini-ops.h: Same.
9161
9162         * mini-x86.h: Same.
9163
9164         * simd-intrinsics.c: Add new vector type Vector2l.
9165
9166 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9167
9168         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9169
9170         * simd-methods.h: Remove SN_op_BitwiseXor.
9171
9172 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9175         alignment.
9176
9177 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9178
9179         * basic-simd.cs: Test for Vector2d.
9180
9181         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9182         value.
9183
9184 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9185
9186         * cpu-x86.md: Add double version of all packed float ops.
9187
9188         * mini-ops.h: Same.
9189
9190         * mini-x86.h: Same.
9191
9192         * simd-intrinsics.c: Add new vector type Vector2d.
9193
9194         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9195
9196         * simd-methods.h: Add Duplicate.
9197
9198 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9199
9200         * basic-simd.cs: Test for packing with signed saturation.
9201
9202 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9203
9204         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9205         found in the TYPESPEC table.
9206
9207 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9208
9209         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9210         too.
9211
9212         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9213
9214         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9215         instead of the RVA, since the RVA can be changed by tools like the cil 
9216         stripper.
9217
9218         * method-to-ir.c (mono_method_to_ir2): Ditto.
9219
9220         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9221         (deserialize_variable): Ditto.
9222
9223 2008-10-25  Martin Baulig  <martin@ximian.com>
9224
9225         * debug-mini.c (write_variable): Use
9226         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9227
9228 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9229
9230         * cpu-x86.md: Add unsigned variants of packd and packw.
9231
9232         * mini-ops.h: Same.
9233
9234         * mini-x86.h: Emit the right instruction for packd and packw.
9235         Add unsigned variants of packd and packw.
9236
9237         * simd-intrinsics.c: Packd and packw were used in place of their
9238         unsigned variants. Change that.
9239         Add intrinsics for (Signed)PackWithSignedSaturation.
9240
9241         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9242
9243 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9244
9245         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9246
9247 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9248
9249         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9250
9251         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9252
9253         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9254         sse instructions.
9255
9256         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9257
9258 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9259
9260         * method-to-ir.c, mini.c: Special casing for the synchronized
9261         wrapper for the ldtoken+GetTypeFromHandle case.
9262
9263 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9264
9265         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9266
9267         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9268         created/split bblocks.
9269
9270 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9271
9272         * mini-ops.h: Add packed signed mul high.
9273         
9274         * cpu-x86.md: Same.
9275
9276         * mini-x86.c (mono_arch_output_basic_block): Same.
9277
9278         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9279
9280         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9281
9282 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9283
9284         * basic-simd.cs: Tests for Vector16sb.
9285
9286 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9287
9288         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9289
9290 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9291
9292         * mini-ops.h: Add packed signed min, max and compare greater.
9293         
9294         * cpu-x86.md: Same.
9295
9296         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9297         saturation.
9298
9299         * simd-methods.h: Add CompareGreaterThan.
9300
9301         * simd-methods.h: Remove CompareEquals.
9302
9303         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9304
9305         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9306
9307         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9308         CompareEqual.
9309
9310 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9311
9312         * basic-simd.cs: Fix tests due to change in the API.
9313
9314 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9315
9316         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9317
9318 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9319
9320         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9321
9322         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9323         inst_offset as this has invalid values for LDADDR.
9324
9325 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9326
9327         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9328
9329         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9330
9331 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9332
9333         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9334         for accessing field->data.
9335
9336 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9337
9338         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9339
9340 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9341
9342         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9343
9344         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9345
9346 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9347
9348         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9349         from the cfg mempool.
9350
9351 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9352
9353         * basic-simd.cs: Tests for new methods in Vector8us.
9354
9355 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9356
9357         * mini-ops.h: Add multiply and store high.
9358         
9359         * cpu-x86.md: Same.
9360
9361         * mini-x86.c (mono_arch_output_basic_block): Same.
9362
9363         * simd-methods.h: Same.
9364
9365         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9366         and CompareEqual.
9367
9368 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9369
9370         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9371         mono_class_setup_vtable ().
9372
9373         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9374         mono_class_get_vtable_entry () for accessing klass->vtable.
9375
9376         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9377
9378         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9379         found.
9380
9381         * method-to-ir.c (mono_save_token_info): Don't save references made from
9382         wrappers.
9383
9384         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9385         of generic instances.
9386
9387         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9388
9389 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9390
9391         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9392         OP_JMP depends on the method signature.  Calculate it properly.
9393
9394 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9395         
9396         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9397         called directly.
9398
9399         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9400         instances.
9401         (emit_extra_methods): Add another table mapping method indexes to 
9402         offsets in the extra_method_info table.
9403
9404         * mini.h: Bump AOT file format version.
9405         
9406         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9407         and mono_aot_get_method_from_token () into one function.
9408
9409 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9410
9411         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9412         separate counter.
9413
9414 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9415
9416         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9417         methods.
9418
9419         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9420         disable_aot.
9421
9422         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9423
9424         * mini.h: Bump aot file format version.
9425
9426         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9427         AOT file can contain native code for methods which are not in the METHOD
9428         table. Generate code for non-sharable generic instances of generic methods
9429         found in the METHODSPEC table.
9430         
9431         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9432         encoding generic type handles.
9433
9434         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9435         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9436
9437         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9438         macros + MONO_ADD_INS.
9439
9440         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9441         context as well.
9442
9443         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9444
9445         * mini.h: Bump aot file format version.
9446
9447         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9448
9449 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9450
9451         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9452         platforms, with definable stack alignment value.  Set to 16 now
9453         for all platforms.
9454
9455         * mini.c, mini.h, driver.c: Command line option for disabling
9456         stack alignment.
9457
9458 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9459
9460         * basic-simd.cs: Tests for new methods in Vector4ui.
9461
9462 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9463
9464         * mini-ops.h: Add packed int shuffle.
9465         
9466         * cpu-x86.md: Same.
9467
9468         * mini-x86.c (mono_arch_output_basic_block): Same.
9469
9470         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9471         extract mask, max, min, shuffle.
9472
9473         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9474
9475 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9476
9477         * basic-simd.cs: Tests for new methods in Vector8us.
9478
9479 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9480
9481         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9482         RuntimeTypeHandle, not a TypedReference.
9483
9484 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9485
9486         * simd-intrinsics.c: remove relocations.
9487
9488 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9489
9490         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9491         optimizations from the x86 backend.
9492
9493 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9494
9495         * simd-methods.h, simd-intrinsics.c: debloat method names and
9496         prepare for no relocations.
9497
9498 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9499
9500         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9501         
9502         * cpu-x86.md: Same.
9503
9504         * mini-x86.c (mono_arch_output_basic_block): Same.
9505
9506         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9507         extract mask, max, min and sum of absolute differences.
9508
9509         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9510         method name.
9511
9512 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9513
9514         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9515         Renamed one test for consistency.
9516
9517 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9518
9519         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9520         fix to the code that deal with other blocks.
9521
9522 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9523
9524         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9525
9526 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9527
9528         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9529         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9530         able to process the source reg.
9531
9532 2008-10-16  Martin Baulig  <martin@ximian.com>
9533
9534         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9535
9536         * inssel.brg: Add `OP_HARD_NOP'.
9537
9538         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9539
9540         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9541         `OP_HARD_NOP' instruction when running inside the debugger.
9542
9543         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9544         `OP_HARD_NOP' instruction when running inside the debugger.
9545
9546 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9547
9548         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9549         now works. The issue with the regalloc tripping up no longer
9550         happens.
9551
9552         * simd-intrinsics.c (load_simd_vreg): Same.
9553
9554 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9555         
9556         * basic-simd.cs: Tests for new Vector8ui methods.
9557
9558 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9559
9560         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9561         only for type. This fixes crashes where MonoInst::klass is checked
9562         for ops of type != VTYPE or OBJ.
9563
9564         * simd-intrinsics.c (load_simd_vreg): Same.
9565
9566 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9567
9568         * mini-ops.h: Add ops for packed shuffle/max/avg and
9569         extract mask.
9570         
9571         * cpu-x86.md: Same.
9572
9573         * mini-x86.c (mono_arch_output_basic_block): Same.
9574
9575         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9576         extract mask.
9577
9578         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9579         to emit extract mask op.
9580
9581         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9582         to emit word shuffles.
9583
9584 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9585
9586         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9587         the largest alignment needed by a variable, but at least
9588         sizeof(gpointer).
9589
9590 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9591
9592         * basic-simd.cs: Tests for the fixes in the last commit.
9593
9594 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9595
9596         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9597         no longer handles STACK_PTR input.
9598
9599         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9600
9601         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9602         get_simd_vreg   but handles STACK_PTR input.
9603
9604         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9605         as the input can be an arbitrary pointer.
9606
9607         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9608         LDADDR local optimization directly otherwise use a store op.
9609
9610 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9611
9612         * basic-simd.cs: Tests for dup low and dup high.
9613
9614 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9615
9616         * mini-ops.h: Add dup low and dup high ops.
9617         
9618         * cpu-x86.md: Same.
9619
9620         * mini-x86.c (mono_arch_output_basic_block): Same.
9621
9622         * simd-intrinsics.c (vector4f_intrinsics): Same.
9623
9624 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9625
9626         * basic-simd.cs: Tests for recently added functionality.
9627
9628 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9629
9630         * mini-ops.h: Add remaining sse1 fp ops.
9631         
9632         * cpu-x86.md: Add remaining sse1 fp ops.
9633
9634         * mini-x86.c (mono_arch_output_basic_block): Same.
9635
9636         * mini.h: Add enum for simd FP compare conditions.
9637
9638         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9639
9640         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9641         so the backed can generate the appropriate op.
9642
9643 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9644         This patch squeese one more byte from the SimdIntrinsc struct.
9645
9646         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9647         a a shift amount intead of simply or'ing it.
9648
9649         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9650
9651         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9652         byte so we can have an aditional flags field without increasing struct size.
9653
9654         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9655         against the simd_supported_versions bitmask.
9656
9657         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9658
9659 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9660
9661         * mini.c: remove rawbuffer code (the only use here is unsafe because
9662         it takes locks during signal handling and the kernel now provides much
9663         better info in proc/pid/smaps these days).
9664
9665 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9666
9667         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9668         OP_X86_PUSH_OBJ. Fixes #434620.
9669
9670         * objects.cs: Add a test.
9671         
9672 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9673
9674         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9675         that the packuswb/packusdw don't work with unsigned numbers for what
9676         would be negative numbers in signed format.
9677
9678         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9679         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9680
9681         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9682
9683         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9684
9685         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9686
9687         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9688
9689         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9690         add more ops.
9691
9692         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9693         version as the enum in mini.h.
9694
9695         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9696         for sse3 ops, check the simd_version field if present. This way the code
9697         works with all versions of sse.
9698
9699 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9700
9701         * simd-intrinsics.c: Fixed intrinsic name typo.
9702
9703         * mini.h: Added missing simd exported function.
9704
9705         * basic-simd.cs: Added tests for Vector4ui.
9706         Fixed broken test for Vector16b.
9707
9708 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9709
9710         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9711         the max length to 64.
9712
9713 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9714
9715         * method-to-ir.c: Only do the fast virtual generic method call for
9716         non-wrapper methods.
9717
9718         * mini.h, mini-trampolines.c: The new generic virtual remoting
9719         trampoline handles virtual method calls via the vtable (as done by
9720         the fast virtual generic method calls) to remoting proxies.
9721
9722         * mini.c (mono_jit_create_remoting_trampoline): For generic
9723         methods reate a generic virtual remoting trampoline.
9724
9725         * mini-amd64.h: Enable fast virtual generic method calls again.
9726
9727 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9728
9729         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9730         restore registers when doing tail calls.
9731
9732 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9733
9734         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9735         Vector4ui.
9736
9737 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9738
9739         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9740
9741 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9742
9743         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9744
9745 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9746
9747         * basic-simd.cs: Retrofit for API changes.
9748
9749 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9750
9751         * mini-ppc.c: Handle integer stack arguments for tail calls.
9752
9753 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9754
9755         * optflags-def.h: Removed sse3 optimization.
9756
9757         * driver.c: Same.
9758
9759         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9760         sse3.
9761
9762         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9763
9764         * mini.h: Added enumeration with simd versions.
9765
9766         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9767         for detecting SSE3.
9768
9769         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9770
9771         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9772
9773 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9774
9775         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9776
9777         * basic-simd.cs: Fixed test naming.
9778
9779 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9780
9781         * mini-ops.h: Added ops for packed and saturated math, shifts
9782         and packing/unpacking.
9783
9784         * cpu-x86.md: Added descriptors for the above ops.
9785
9786         * mini-x86.c: Added code to emmit the above ops.
9787
9788         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9789
9790 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9791
9792         * aot-compiler.c (compile_method): Enable AOT for generic code.
9793
9794         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9795
9796 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9797
9798         * mini.c: add a workaround for a common screwup that ends up blamed
9799         to mono (other processes blocking signal delivery).
9800
9801 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9802
9803         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9804         in the LDFLD/STFLD opcodes. Fixes #432673.
9805
9806         * iltests.il.in: Add a new test.
9807
9808 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9809
9810         * mini-arm.c: attach the thread in unmanaged->managed transitions
9811         using delegates (bug #433148).
9812
9813 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9814
9815        * basic-simd.cs: Use new ShuffleSel constants.
9816
9817 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9818
9819         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9820
9821         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9822         only disable simd intrinsics if no sse2 is detected.
9823
9824         * optflags-def.h: Added sse3.
9825
9826         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9827         is disabled.
9828
9829 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9830
9831         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9832         when adding delegate-invoke wrappers.
9833
9834 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * Makefile.am: Reenable the simd tests.
9837
9838 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9839
9840         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9841           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9842           other vreg is allocated to that hreg.
9843
9844         Contributed under MIT/X11 license.
9845
9846 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9847
9848         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9849         yet checked in.
9850
9851 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9852
9853         * basic-simd.cs: New test suite for SIMD intrinsics.
9854
9855         * Makefile.am: Added new tests.
9856
9857 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9858
9859         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9860
9861         * mini-ops.h: Same.
9862
9863         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9864
9865         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9866         using SSE2 aware opcodes.
9867
9868         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9869         is enabled, this code path is only reachable if conversion ops are emmited after
9870         mono_method_to_ir.
9871
9872         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9873
9874         This optimization saves 6 bytes per conversion against the old version.
9875
9876 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9877
9878         * aot-compiler.c (compile_method): Don't skip methods referencing 
9879         generic methods without a corresponding entry in token_info_hash, since
9880         encode_method_ref () can handle all generic methods now.
9881
9882         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9883         generic context is set.
9884         
9885         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9886         generic sharing of LDTOKEN.
9887
9888 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9889
9890         * mini-amd64.h: Temporarily disabled fast virtual generic method
9891         calls because it breaks the System.Runtime.Remoting tests.
9892
9893 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9894
9895         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9896
9897         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9898         so inlining actually works.
9899         (check_inline_caller_method_name_limit): Ditto.
9900
9901 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9902
9903         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9904         64 bit safety (from Olaf Hering and Andreas Farber).
9905
9906 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9907         
9908         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9909         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9910         unused virtual call support code.
9911
9912         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9913         
9914         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9915         which can't use aot trampolines.
9916         (decode_patch): Don't create aot trampolines for methods which can't use
9917         them.
9918
9919         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9920         use aot trampolines.
9921
9922         * mini.h: Bump AOT image format version.
9923         
9924 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9925
9926         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9927         to save_token_info () since cmethod is inflated for constrained calls.
9928
9929         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9930
9931 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9932
9933         * Makefile.am: Add build rules for ppc64.
9934         This avoids the build failing at pedump with unresolved symbols
9935         due to lack of arch_sources. Instead it will now fail earlier
9936         due to lack of cpu-ppc64.md.
9937
9938         Contributed under MIT/X11 license.
9939
9940 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9941
9942         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9943         tail calls.
9944
9945         * iltests.il.in: Add test case for tail call with many arguments.
9946
9947 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9948
9949         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9950         to the fast virtual generic method code until the aot case is fixed.
9951
9952 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9953
9954         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9955
9956 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9957
9958         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9959         thunks.
9960
9961 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9962         
9963         * simd-intrinsics.c: Forgot to add this one.
9964
9965         * mini-codegen.c: Fix macro in case SIMD is not supported.
9966
9967 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9968         
9969         This patch land initial JIT support for simd intrinsics.
9970
9971         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9972
9973         * Makefile.am: Added simd-intrinsics.c
9974
9975         * simd-intrinsics.c: New file with simd instrinsic related
9976         code.
9977
9978         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9979
9980         * cpu-x86.md: Add simd related instructions.
9981
9982         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9983
9984         * driver.c: Added two new --regression variants.
9985
9986         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9987
9988         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9989
9990         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9991         extract some complicated logic to helper functions.
9992
9993         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9994
9995         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9996
9997         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9998         the specialized simplification pass.
9999
10000         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10001
10002         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10003
10004         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10005         table.
10006
10007         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10008         if MONO_ARCH_NEED_SIMD_BANK is defined.
10009
10010         * mini-ops.h: Added the new simd ops.
10011
10012         * mini-x86.c: Added mono_arch_xregname.
10013
10014         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10015
10016         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10017
10018         * mini-x86.h: Define simd related MONO_ARCH macros.
10019
10020         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10021
10022         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10023
10024         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10025         MONO_CLASS_IS_SIMD to deal with simd related IR.
10026
10027         * mini.h (MonoInst): Added spill_var to the backend union.
10028
10029         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10030
10031         * mini.h: Added forward declarations of the new simd fuctions.
10032
10033         * optflags-def.h: Added new optimization names SIMD.
10034
10035         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10036
10037         * regalloc.h: Added support for working with 3 register banks.
10038
10039         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10040
10041         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10042
10043 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10044
10045         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10046
10047 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10048
10049         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10050         instead of one on 64 bit systems.
10051
10052         * method-to-ir.c: Remove unused includes.
10053
10054 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10055
10056         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10057         cfg->used_int_regs, since the two are different on arm.
10058
10059 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10060
10061         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10062         mono_method_get_vtable_index() to get the vtable index.
10063
10064 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10065
10066         * method-to-ir.c (mono_method_to_ir2): Don't create native
10067         wrappers for array methods, because they're never called (and if
10068         they were called they wouldn't work).
10069
10070 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10071
10072         * method-to-ir.c (mono_method_to_ir2): Array methods are
10073         special-cased and must not be invoked indirectly via the (M)RGCTX
10074         when generic sharing is turned on.  Fixes #431413.
10075
10076 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10077
10078         * method-to-ir.c: When generic sharing is active, call
10079         non-interface virtual generic methods via the standard trampoline.
10080
10081         * mini-trampolines.c: Handle virtual generic shared methods.
10082
10083         * mini.h, mini-x86.c, mini-x86.h: New argument for
10084         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10085         method thunks and which is the trampoline to call if the lookup
10086         fails.  Enable the virtual generic method thunk for x86.
10087
10088         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10089         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10090         argument but assert that it's NULL, because these archs don't yet
10091         implement the virtual generic method thunk.  Changes in the IMT
10092         thunk data structures.
10093
10094 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * aot-compiler.c (emit_globals): Avoid invalid characters in
10097         the static linking symbol.
10098
10099         * objects.cs: Add a test for the range check optimization. Fix warnings.
10100
10101         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10102         optimization from the current JIT.
10103
10104         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10105         later in decompose_array_access_opts () to allow more optimizations.
10106
10107         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10108         mono_decompose_soft_float () for consistency.
10109
10110         * mini-ops.h: Fix arguments of OP_STRLEN.
10111
10112         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10113         into a separate function.
10114         (reset_cast_details): Ditto.
10115         (handle_unbox): Save cast details. Fixes #431254.
10116
10117         * method-to-ir.c: Remove some obsolete FIXMEs.
10118
10119 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10120
10121         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10122
10123 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10124
10125         * mini-codegen.c: More work on macros to make them
10126         ready for multiple regbanks.
10127
10128 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10129
10130         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10131
10132         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10133
10134 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10135
10136         * mini-codegen.c (mono_spillvar_offset): Proper support for
10137         multiple regbanks.
10138
10139 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10140
10141         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10142         the stack overflow changes.
10143
10144 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10145
10146         * mini-codegen.c: Make all bank macros depend on reg_bank.
10147
10148         * mini-codegen.c (mono_local_regalloc): Make free mask
10149         initialization regbank aware.
10150
10151 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10152
10153         * mini-codegen.c (mono_local_regalloc): Extract callee
10154         mask selection to a function and make it regbank aware.
10155
10156 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10157
10158         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10159         code to deal with many regbanks.
10160
10161 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10162
10163         * mini-codegen.c: More fp->regbank changes.
10164
10165 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10166
10167         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10168         of a hardcoded constant.
10169
10170 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10171
10172         * method-to-ir.c (type_from_stack_type): Fix typo.
10173
10174 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10175
10176         * mini-ia64.c (emit_move_return_value): Convert float return values to
10177         double.
10178
10179         * objects.cs: Add a new test.
10180         
10181         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10182         VARARG methods to fix an assert later.
10183
10184         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10185         end so it at least compiles.
10186
10187 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10188
10189         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10190
10191 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10192
10193         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10194         optimization to a new function (emit_optimized_ldloca_ir) and enable
10195         it for both ldloca and ldloca_s.
10196
10197 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10200         gshared CASTCLASS code.
10201
10202         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10203         amd64, where the libc stack unwinder encounters stack frames referring to
10204         native code in unmapped memory.
10205
10206         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10207         sharing.
10208
10209         * generics.cs: Add new test.
10210
10211 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10212
10213         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10214         add a check that one of the ARM_FPU_ constants is defined.
10215
10216         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10217         
10218         * mini-exceptions.c: Fix build on non-altstack platforms.
10219
10220         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10221         sharing of vtypes.
10222
10223         * ir-emit.h: Add a comment to NEW_PCONST.
10224
10225         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10226
10227         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10228
10229         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10230         after the changes to MonoJitDomainInfo.
10231
10232 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10233
10234         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10235
10236 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10237
10238         * mini-ppc.c: Compiler warning fixes.
10239
10240 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10241
10242         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10243         for pinvokes.
10244
10245 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10246
10247         * exceptions-ppc.c, mini-ppc.h: Compile
10248         mono_arch_handle_altstack_exception() on Darwin, too.
10249
10250 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10251
10252         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10253         work on archs which don't have generic sharing implemented, only
10254         without the vtable_arg.
10255
10256 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10257
10258         * mini.c: Added comment explaining why delegate ctor icall
10259         wrappers are compiled.
10260
10261 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10262
10263         * mini.c: Don't produce trampolines to delegate ctor icall
10264         wrappers but compile them upfront.
10265
10266 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10267
10268         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10269         runtime-set function when going back to managed code. Currently this
10270         is used to set back the protection on the soft ovf pages and/or to
10271         throw the stack overflow exception that happened in unmanaged code.
10272
10273 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10274
10275         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10276         runtime-set function when going back to managed code. Currently this
10277         is used to set back the protection on the soft ovf pages and/or to
10278         throw the stack overflow exception that happened in unmanaged code.
10279
10280 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10281
10282         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10283         the support code for restoring stack protection after stack overflows
10284         that happen in unmanaged code. Don't set the exec permission on the
10285         soft overflow area.
10286
10287 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10288
10289         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10290         delegate->method_ptr is set. Fixes #428054.
10291
10292 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10293
10294         * tests.cs: Rename to ratests.cs.
10295
10296         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10297         emit_get_rgctx_... functions.
10298
10299 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10300
10301         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10302
10303 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10304
10305         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10306         before asserting that method is sharable.
10307
10308 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10309
10310         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10311         whether method needs a static RGCTX wrapper used instead of
10312         complex conditions.
10313
10314         * generic-sharing.c, mini.h: A few functions moved to
10315         metadata/generic-sharing.c.
10316
10317 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10318
10319         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10320         Generic code sharing for value types, which essentially means
10321         treating value type methods like static methods.  The RGCTX is
10322         passed in the same way.
10323
10324 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10325
10326         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10327         opcode when creating multi-dimensional arrays of open types.
10328
10329         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10330         open generic types.
10331
10332         * generics.cs: Add a test.
10333
10334         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10335
10336 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10337
10338         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10339
10340         * mini.c (mini_method_compile): Set it when running under the debugger. 
10341
10342         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10343         vreg optimization if the flag is set.
10344
10345         * driver.c (mono_main): Add --attach= option to pass options to
10346         the attach agent.
10347
10348         * mini.c (sigquit_signal_handler): Start the attach agent.
10349
10350         * ssapre.c: Disable this to save space since it is not yet ported to
10351         linear IR.
10352
10353         * regalloc2.c: Disable this to save space.
10354
10355         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10356
10357 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10358
10359         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10360         the -v option useful again.
10361
10362 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10363
10364         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10365         --break-at-bb.
10366
10367         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10368         arrays of arrays. Fixes #428406.
10369
10370         * method-to-ir.c (mini_emit_castclass): Ditto.
10371
10372         * objects.cs: Add new test.
10373         
10374 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10375
10376         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10377         was wrong at it choked against target_type_is_incompatible for byref types.
10378
10379 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10380
10381         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10382         places.
10383
10384 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10385
10386         * mini-exceptions.c: update a few more exceptions-related counters.
10387
10388 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10389
10390         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10391         new functions to allocate from persistent mempools.
10392
10393 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10394
10395         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10396         multiple register banks in the future.
10397
10398         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10399
10400 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10401
10402         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10403
10404         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10405
10406         * mini.h: Export type_to_eval_stack_type.
10407
10408         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10409         is only ins->klass of byref types.
10410
10411 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10412
10413         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10414         (mini_emit_memcpy2): Ditto.
10415
10416         * mini-amd64.c: Fix a warning.
10417
10418 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10419
10420         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10421         linking.
10422
10423 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10424
10425         * method-to-ir.c: Extract stloc micro-optimization to a
10426         function and apply it to all cases.
10427
10428 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10429
10430         * method-to-ir.c: Don't fail generic code sharing in cases we
10431         already support.
10432
10433 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10434
10435         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10436
10437 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10438
10439         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10440         implementation.
10441
10442 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10443
10444         * trace.c: make tracing more useful and correct, with per-thread
10445         id and indent info.
10446
10447 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10448
10449         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10450         doing a method call and the argument is an R4.
10451
10452 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10453
10454         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10455         generic methods.
10456
10457 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10458
10459         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10460
10461 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10464         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10465
10466 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10467
10468         * driver.c: Add a --agent argument (not supported yet) to load managed
10469         agent assemblies before loading the main assembly, similarly to how the
10470         Java VM handles agents.
10471
10472 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10473
10474         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10475         function to do stack layout of local variables.
10476
10477 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10478
10479         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10480         calculation.
10481
10482 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10485         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10486         JIT if DISABLE_JIT is defined.
10487
10488         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10489         defined.
10490
10491 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10492
10493         * iltests.il.in: Disable the fconv test on PPC (the result is
10494         undefined according to ECMA).
10495
10496 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10497
10498         * iltests.il.in: Enable tail call tests for PPC.
10499
10500         * mini.h: Add variable for storing incoming valuetype argument
10501         addresses for tail calls.
10502
10503         * mini-ppc.c: Implement valuetype arguments and return values for
10504         tailcalls on Linux.
10505
10506 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10507
10508         * mini-ppc.c: Partially implement tail calls (struct arguments and
10509         return values not supported).
10510
10511         * method-to-ir.c: Enable tail calls on PPC.
10512
10513 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10514
10515         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10516         runtime-invoke wrappers to work around the problem of them getting
10517         assigned to a random class.
10518
10519         * aot-runtime.c (mono_aot_get_method): Ditto.
10520         
10521 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10522
10523         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10524         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10525
10526 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10527
10528         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10529         until they're implemented properly.
10530
10531         * exceptions-ppc.c: Use arch-independent exception-handling code
10532         instead of custom one.
10533
10534         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10535         for Linear IR.
10536
10537         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10538
10539         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10540         applies when __powerpc__ is defined.
10541
10542 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10543
10544         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10545         methods to their code to avoid computing the full name of wrappers and
10546         doing a lookup in a string hash table.
10547
10548 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10551         we identify bblocks before method_to_ir () is ran.
10552
10553         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10554         Also avoid optimizing branches pointing to themselves.
10555
10556         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10557
10558 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10559
10560         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10561
10562 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10563
10564         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10565         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10566         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10567         'buf'.
10568
10569         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10570         jumped to the same entry in plt_jump_table.
10571
10572 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10573
10574         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10575         dynamic images.
10576
10577 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10580         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10581         #421807.
10582
10583 2008-08-29  Geoff Norton  <gnorton@novell.com>
10584
10585         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10586         segment, and doesn't properly handle .space as .text.  Fixes
10587         AOT Mach/ARM
10588
10589 2008-08-29  Geoff Norton  <gnorton@novell.com>
10590
10591         * mini.c: Disable the mach exception handler when running on 
10592         ARM
10593
10594 2008-08-29  Geoff Norton  <gnorton@novell.com>
10595
10596         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10597         globals on Darwin/ARM
10598
10599 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10602         since too many things depend on it. Instead, call 
10603         mono_runtime_set_no_exec ().
10604         
10605         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10606         the new JIT.
10607
10608         * aot-compiler.c: Add an 'asm-only' AOT option.
10609
10610         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10611                 
10612         * aot-compiler.c (compile_method): Disable gshared support for now as it
10613         doesn't yet work.
10614
10615 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10616
10617         * mini-amd64.h : Fix a compiler warning.
10618
10619         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10620           Changed to use a callback function to retrieve the unwind info.
10621           This avoids problems observed when code blocks were removed by
10622           unloading an app domain.
10623
10624         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10625           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10626           to work properly.
10627
10628         Contributed under MIT/X11 license.
10629
10630 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10631
10632         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10633           case to keep the stack aligned to 8.
10634
10635         Contributed under MIT/X11 license.
10636
10637 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10638
10639         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10640         avoid repeated linear searches.
10641
10642 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10643
10644         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10645         methods it can't handle.
10646         
10647         * aot-compiler.c (add_method): Avoid adding a method twice.
10648         (add_wrappers): Add runtime invoke wrappers for all methods.
10649
10650         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10651         function to create an aot-compatible version of this trampoline.
10652
10653         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10654
10655 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10658
10659         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10660         with a generic sharing failure.
10661
10662         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10663
10664         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10665         CEE_RETHROW. Fixes #419634.
10666
10667         * mini.c (mono_method_to_ir): Ditto.
10668
10669         * exceptions.cs: Add a new test.
10670         
10671         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10672         to mono_type_stack_size_internal () since some callers might not pass in
10673         an rgctx.
10674
10675         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10676         instrument_prolog. Fixes #419878.
10677
10678         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10679         doubles in soft float mode volatile.
10680
10681 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10682
10683         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10684
10685         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10686         to handle soft float correctly.
10687
10688         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10689         the fast path.
10690
10691         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10692
10693         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10694         to sp, since the generics catch code requires it.
10695
10696         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10697         copying.
10698
10699         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10700         mono_arch_emit_imt_argument ().
10701
10702         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10703
10704         * mini-arm.c tramp-arm.c: Generic sharing updates.
10705
10706 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10707
10708         * mini-arm.c: Fix the arm build.
10709
10710         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10711         handling enums, generic instances and generic sharing.
10712         (mini_type_stack_size_full): Ditto.
10713
10714         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10715         
10716         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10717
10718         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10719
10720         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10721         trampolines.
10722
10723         * mini-arm.c: Various small generic sharing changes.
10724
10725         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10726         this for x86.
10727         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10728         custom code.
10729
10730         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10731         helper function to return a generic class init trampoline.
10732
10733         * method-to-ir.c mini.c: Use it.
10734         
10735         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10736         arch-specfic function to return a generic class init trampoline.
10737
10738         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10739         the GENERIC_CLASS_INIT custom code.
10740
10741         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10742         a fatal error, not a sharing failure.
10743
10744         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10745         needed.
10746
10747         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10748         trampoline argument from MONO_ARCH_VTABLE_REG.
10749
10750         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10751         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10752         argument, and pass the vtable in VTABLE_REG.
10753
10754         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10755         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10756         argument, and pass the vtable in VTABLE_REG.
10757         (mono_arch_create_trampoline_code_full): Remove some special casing for
10758         the rgctx fetch trampoline.
10759
10760         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10761         Fixes #419273.
10762
10763         * iltests.il: Add a test for it.
10764
10765 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10766
10767         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10768
10769         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10770         no longer needed.
10771
10772         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10773         use mono_jit_info_table_find () to avoid recursion.
10774         (mono_delegate_trampoline): Add a sync wrapper here.
10775
10776         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10777         here.
10778
10779         * mini.c (mono_method_to_ir): Ditto.
10780         
10781         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10782         add_sync_wrapper argument. Don't add a sync wrapper here.
10783         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10784
10785         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10786         
10787 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10788
10789         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10790           of nonvolatile registers back from MonoContext to CONTEXT.
10791
10792         Contributed under MIT/X11 license.
10793
10794 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10795
10796         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10797           arguments on Winx64 there are only 4 argument registers.  For this
10798           logic to work the last argument must be pulled from the stack.  
10799
10800         Contributed under MIT/X11 license.
10801
10802 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10803
10804         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10805
10806         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10807         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10808         encode/decode_method_ref ().
10809
10810         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10811
10812         * aot-runtime.c (decode_patch): Ditto.  
10813
10814         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10815         MONO_PATCH_INFO_METHOD.
10816
10817         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10818         MonoGenericJitInfo.
10819
10820         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10821         MonoGenericJitInfo.
10822
10823         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10824
10825         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10826         one from the caller.
10827
10828         * aot-runtime.c (decode_generic_inst): New function to decode and
10829         return a interned generic inst.
10830         (decode_klass_ref): Use it.
10831         (decode_method_ref): Ditto.
10832
10833         * aot-compiler.c (emit_exception_debug_info): Save 
10834         jinfo->has_generic_jit_info too.
10835
10836 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10837
10838         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10839
10840         * iltests.il.in: Add a test for fconv_to_i.
10841
10842         * liveness.c: Disable the liveness2 pass for now to save space.
10843
10844         * regalloc2.c: Include mempool-internals.h to fix warnings.
10845
10846         * aot-compiler.c (encode_method_ref): Encode the context of generic
10847         instance methods.
10848
10849         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10850         the context saved in the aot file.
10851
10852         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10853
10854         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10855
10856         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10857         volatile so they won't be optimized away.
10858
10859 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10860
10861         * ssa.c:
10862         * ssa2.c:
10863         * mini.c:
10864         * regalloc2.c:
10865         * dominators.c: Remove duplicated functions that now are in
10866         mempool-internals.h.
10867
10868 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10869
10870         * aot-compiler.c: Fix warnings.
10871
10872         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10873
10874         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10875
10876         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10877         as the patch type.
10878
10879         * mini.c (mono_resolve_patch_target): Ditto.
10880         
10881         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10882         (encode_klass_ref): Add support for encoding VARs/MVARs.
10883
10884         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10885
10886         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10887         the handling of the got entries into a separate 'decode_got_entry' function.
10888         Add support for RGCTX_FETCH.
10889
10890         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10891         clobbered by the trampoline code.
10892
10893         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10894         not clobbered by the indirect calling code.
10895
10896 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10897
10898         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10899         to fix the build.
10900
10901 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10902
10903         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10904         signature using the compilation mempool otherwise we would leak it.
10905
10906 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10909         mono_emit_abs_call ().
10910
10911         * patch-info.h: Add GENERIC_CLASS_INIT.
10912
10913         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10914
10915         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10916         as their target as a near call.
10917
10918         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10919         ABS handling code.
10920         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10921
10922         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10923         call to a runtime function described by a patch.
10924
10925         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10926         mono_emit_abs_call, this has the advantage that the ABS handling code in
10927         mono_codegen () can handle them both, and can handle other stuff in the
10928         future without additional code.
10929
10930         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10931         entry.
10932         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10933         abs addresses.
10934
10935         * mini.h: Add missing bblock related prototypes.
10936
10937         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10938         reverse_inst_list_len fields.
10939
10940         * mini.c: Refactor this file a bit by moving branch optimizations to 
10941         branch-opts.c.
10942
10943         * method-to-ir.c: Merge generic sharing changes missed earlier.
10944
10945         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10946
10947         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10948         shared patches. Process METHODCONST as a shared patch.
10949
10950         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10951         as it crashes on the 2.0 mscorlib.
10952
10953         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10954         to cause crashes.
10955         
10956         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10957         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10958         by IMT.
10959
10960         * aot-compiler.c: Reorganize the got handling code to be a bit more
10961         understandable.
10962
10963 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10966         mono_patch_info_equals/hash, and use it to massively simplify
10967         get_plt_index ().
10968
10969         * mini.c (mono_patch_info_hash): Simplify this and add support for
10970         more patch types.
10971
10972         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10973
10974         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10975         handling code, since an offset is not enough to identify a trampoline.
10976
10977         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10978
10979 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10980
10981         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10982
10983         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10984
10985         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10986
10987         * decompose.c: PPC decompositions for various ops.
10988
10989         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10990
10991 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10992
10993         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10994         call the generic trampoline code using a call, instead of a jump, to
10995         remove some special casing from the generic trampoline code.
10996
10997         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10998         (mono_codegen): Ditto.
10999
11000         * aot-compiler.c aot-runtime.c: Ditto.
11001
11002         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11003
11004         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11005         helper function to find the offset corresponding to a lazy fetch trampoline.
11006
11007         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11008         when doing generic sharing.
11009
11010         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11011         places.
11012         
11013         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11014         mini-trampolines.c to be with the other trampoline creation functions.
11015
11016         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11017         as it is equal to method->signature in most cases, add a 
11018         mono_emit_method_call_full variant which takes a signature and an imt
11019         argument as well.
11020
11021 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11022
11023         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11024         to this function, since it could be computed easily from the method 
11025         argument.
11026         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11027         more.
11028
11029         * method-to-ir.c mini.c: Remove references to 
11030         compile_generic_method_wo_context.
11031
11032         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11033         generic method calls.
11034         
11035         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11036         dimensional non-szarrays.
11037
11038         * mini.c (mini_init): Register mono_array_new_1.
11039
11040         * jit-icalls.c (mono_array_new_1): New jit icall.
11041
11042         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11043         pointing to the method.
11044
11045         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11046         method addresses belonging to METHOD_JUMP patches in the 
11047         jump_target_got_slot_hash.
11048         (mono_aot_load_method): Ditto.
11049
11050         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11051         METHOD_JUMP patches.
11052
11053         * mini.c (mini_create_jit_domain_info): New helper function which 
11054         initializes/frees domain->runtime_info.
11055         (mini_free_jit_domain_info): Ditto.
11056         (mini_init): Install the domain hook functions with the runtime.
11057
11058         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11059         information maintained by the JIT.
11060
11061         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11062         insertion into jump_table_hash into mono_codegen (), also implement proper
11063         locking.
11064
11065         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11066         tail calls, it is already done by the aot code.
11067         
11068         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11069         mechanism on amd64.
11070
11071         * iltests.il.in: Make the jmp test a bit more complex.
11072
11073         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11074         generic instances which doesn't have a token.
11075
11076         * aot-runtime.c (decode_method_ref): Ditto.
11077         
11078         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11079         can handle this case now.
11080         (handle_box): Ditto.
11081
11082 2008-08-15  Geoff Norton  <gnorton@novell.com>
11083
11084         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11085         debugging check.
11086
11087 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11090         calling generic methods.
11091
11092         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11093
11094         * aot-runtime.c (decode_patch_info): Ditto.
11095
11096         * mini.c (mono_resolve_patch_target): Ditto.
11097         
11098         * patch-info.h: Add METHOD_RGCTX.
11099
11100         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11101
11102 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11103
11104         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11105         arguments in registers.
11106
11107         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11108         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11109
11110         * mini.c (mini_method_compile): Abort aot compilation for generic
11111         methods if generic sharing is disabled.
11112         
11113         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11114         an mrgctx.
11115
11116         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11117         requiring an mrgctx.
11118
11119         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11120         store instructions when converting a vcall to a normal call.
11121
11122         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11123         mono_arch_find_jit_info.
11124
11125 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11128         avoid calling mono_method_full_name () for every method even if the
11129         env var is not set.
11130         (check_inline_caller_method_name_limit): Ditto.
11131
11132 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11133
11134         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11135         assemblies in one run.
11136
11137         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11138         skipped methods if it is not 0.
11139
11140         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11141
11142 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11143
11144         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11145           MONO_ARCH_HAVE_UNWIND_TABLE.
11146
11147         Contributed under MIT/X11 license.
11148
11149 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11150
11151         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11152           from default optimizaton list on Winx64.
11153
11154         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11155
11156         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11157           the LMF from the MonoJitTlsData structure.
11158
11159         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11160
11161         Contributed under MIT/X11 license.
11162
11163 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11164
11165         * mini.c (sigsegv_signal_handler): Fix the build.
11166
11167         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11168         assembly->aot_module.
11169
11170         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11171         hash table. This simplifies and speeds up a lot of code, and fixes support
11172         for .netmodules.
11173
11174         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11175         with the runtime.
11176
11177         * mini-exceptions.c: Ditto.
11178         
11179         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11180         'native_offset' argument, since these are computed in the 
11181         mono_find_jit_info () function.
11182
11183         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11184         is used by exceptions-ppc.c.
11185
11186         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11187         mono_arch_find_jit_info ().
11188         
11189         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11190         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11191         generic code in mini-exceptions.c.
11192
11193 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11196
11197         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11198         
11199         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11200         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11201         called while holding the loader lock. Fixes #415608.
11202         (mono_aot_get_method_from_token_inner): Ditto.
11203
11204 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11207         to reduce differences between this and the generic implementation in
11208         mini-exceptions.c.
11209         (ves_icall_get_frame_info): Ditto.
11210
11211         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11212
11213         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11214         longer neccesarry.
11215
11216         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11217         mono_arch_get_call_filter () and make it non-static, for consistency with the
11218         other architectures.
11219
11220 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11221
11222         * mini.c:
11223         * local-propagation.c:
11224         * mini-x86.c: Correct the name of arch defines.
11225
11226 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11229         NO_EMULATE_LONG_SHIFT_OPS define.
11230
11231 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11234         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11235
11236         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11237         MACH fixes. Merged from the 2.0 branch.
11238
11239         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11240
11241         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11242         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11243
11244         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11245
11246         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11247         mono_marshal_get_native_wrapper () signature changes.
11248
11249 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11250
11251         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11252         conversion bug under arm.
11253
11254 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11255
11256         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11257
11258         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11259         with overflow checking.
11260
11261 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11262
11263         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11264         to the genmdesc.pl file
11265
11266 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11267
11268         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11269         arg_array in the soft-float versions of the LOAD/STORE macros.
11270
11271         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11272         implementation.
11273
11274         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11275
11276 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11277
11278         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11279         a float HFA. Fixes #413621.
11280
11281 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11282
11283         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11284         frame_size to args_size. Fixes build.
11285
11286 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11289         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11290
11291         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11292         the stack are not unaligned. Fixes #413247.
11293         
11294 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11295
11296         * mini.c: update jitted methods performance counters.
11297
11298 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11299
11300         * mini-exceptions.c: increase the exceptions thrown performance
11301         counter in mono_handle_exception ().
11302
11303 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11304
11305         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11306         can work with netmodules.
11307
11308 2008-07-28  Geoff Norton  <gnorton@novell.com>
11309
11310         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11311         regression tests.
11312
11313 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11314
11315         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11316         correct place.
11317
11318 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11319
11320         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11321           The float param registers and other param registers must be the 
11322           same index on Windows x64.
11323
11324         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11325           ArgValuetypeAddrInIReg argument case.  Setting the argument
11326           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11327
11328         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11329           variable computed above as the copy length for arguments of storage
11330           type ArgValuetypeAddrInIReg.
11331
11332         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11333           ArgValuetypeAddrInIReg argument case.  This case will rely on
11334           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11335
11336         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11337           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11338           jump and tail call instructoins as they do not follow the typical call behavior.
11339
11340         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11341           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11342           local variable and pass the local variable by reference to the called method.
11343
11344         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11345           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11346           of a struct is passed in a register it must be saved with the other
11347           volatile argument on the stack.
11348
11349         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11350           frame pointer the stack adjustment value must be saved to the unwind 
11351           info structure.
11352
11353         Contributed under MIT/X11 license.
11354
11355 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11358         which got lost in the merge.
11359
11360 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11361
11362         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11363         build.
11364
11365         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11366         
11367         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11368         icalls, since they won't be patched.
11369
11370         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11371         different code sequence when running under valgrind to prevent some valgrind
11372         errors.
11373
11374         * iltests.il.in: Add new regression test.
11375
11376         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11377         end with a throw.
11378
11379         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11380         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11381
11382         * iltests.il.in: Add new test.
11383
11384         * aot-compiler.c: Fix some warnings.
11385
11386         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11387         Fixes #412494.
11388
11389 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11390
11391         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11392         (mini_usage_jitdeveloper): Add a missing --wapi option.
11393
11394 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11395
11396         * mini-codegen.c: Simplify the is_fp macros.
11397         (free_up_ireg): Remove, use free_up_reg instead.
11398         (free_up_reg): Fix the fp case.
11399
11400 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11403         lowered earlier.
11404
11405         * exceptions-x86.c: Merge some changes which seemed to have got lost
11406         in the linear-ir merge.
11407
11408         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11409
11410         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11411         long vreg volatile even if the variable was already created.
11412
11413         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11414         volatile variables.
11415
11416 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11419
11420         * mini.c (mono_jit_compile_method_inner): Add support for 
11421         MONO_EXCEPTION_BAD_IMAGE.
11422
11423         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11424         mini_method_get_context () returns NULL. Fixes #356531.
11425
11426         * mini.c (mono_method_to_ir): Ditto.
11427         
11428         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11429         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11430
11431 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11432
11433         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11434         in the LDFTN implementation.
11435
11436 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11437
11438         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11439         code, patch calls to icalls, too, even if they're not in the
11440         shared generic code hash.  Fixes #411962.
11441
11442 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * cpu-x86.md: Increase the length of the fcall opcodes.
11445
11446         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11447         calls returning floats.
11448
11449         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11450         on NEWARR.
11451         
11452         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11453         missed earlier.
11454
11455         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11456         into the domain->method_code_hash.
11457
11458         * aot-compiler.c: Fix win32 build.
11459
11460         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11461         
11462         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11463         gshared NEWARR implementation.
11464
11465         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11466
11467         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11468         can be used outside of method_to_ir.
11469
11470         * mini.h (MonoCompile): Add arg_types field.
11471
11472         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11473         
11474         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11475         the values of the local arg_array and param_types array.
11476
11477 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11478
11479         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11480         got accesses might only get generated later when NEWOBJ is decomposed.
11481         
11482         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11483         looking up the native code of the target method when a delegate is called
11484         for the first time.
11485
11486         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11487         optimization.
11488
11489         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11490
11491         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11492         AOT work on platforms without a working dlsym implementation.
11493
11494         * mini.h: Bump AOT image format version.
11495         
11496 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11497
11498         * mini-exceptions.c: Free a MonoType with
11499         mono_metadata_free_type() instead of g_free().
11500
11501         * aot-runtime.c: Free a MonoType.
11502
11503 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11504
11505         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11506         optimization.
11507
11508         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11509         fp stack on x86.
11510
11511 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11512         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11513         profiler hook.
11514
11515 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11516
11517         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11518         NEWOBJ calls on valuetypes.
11519
11520         * iltests.il.in: Add new test.
11521
11522         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11523
11524 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11527         is no longer needed.
11528
11529         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11530         non register sized integer arguments.
11531         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11532         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11533         emit_memcpy2 ().
11534
11535         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11536         CEE_MONO_RETOBJ.
11537         
11538         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11539         two a binop with different sized arguments is emitted.
11540
11541         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11542         instruction in the ins==NULL case.
11543
11544 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11545
11546         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11547
11548         * mini-x86.c: Fix osx build.
11549
11550         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11551         opcodes as well.
11552
11553         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11554         instruction for non int sized variables.
11555
11556         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11557         implementation.
11558
11559 2008-07-23  Robert Jordan  <robertj@gmx.net>
11560
11561         * method-to-ir.c: Fix MSVC build.
11562
11563 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11564
11565         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11566         a non int sized type, widen it to an int since newer versions of gcc seem to
11567         generate code which needs this.
11568
11569         * ssa2.c abcremoval2.c: Fix warnings.
11570
11571         * *: Merge the Linear IR branch.
11572
11573         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11574         the ChangeLog file there describes all the changes done over the years. 
11575         Further documentation can be found at www.mono-project.com/Linear_IL.
11576
11577 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11578
11579         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11580           The float param registers and other param registers must be the 
11581           same index on Windows x64.
11582
11583         Contributed under MIT/X11 license.
11584
11585 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11586
11587         * mini.c: Make the previous fix GC safe.
11588
11589 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11590
11591         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11592
11593 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11594
11595         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11596           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11597           ArgValuetypeAddrInIReg instead.
11598
11599         Contributed under MIT/X11 license.
11600
11601 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * mini-codegen.c (get_register_spilling): Fix a warning.
11604
11605 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11606
11607         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11608         for types which the initialization fails. Raises the provided exception
11609         at the right stop after cleanup.
11610
11611 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11612
11613         * aot-compiler.c: Free most of the memory allocated during compilation.
11614
11615         * mini.c (mini_parse_debug_options): Fix a leak.
11616         
11617         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11618         during aot compilation.
11619
11620 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11621
11622         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11623         it has too much register pressure.
11624
11625 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11626
11627         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11628
11629 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11630
11631         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11632         on x86.
11633
11634         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11635         on amd64 similar to the way it is done on arm.
11636
11637         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11638
11639         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11640         consistency, normalize error messages, avoid loading aot-only modules in
11641         normal mode.
11642
11643         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11644         for consistency.
11645
11646         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11647
11648 2008-07-11  Martin Baulig  <martin@ximian.com>
11649
11650         * debug-debugger.h
11651         (MonoDebuggerInfo): Add `interruption_request'.
11652
11653 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11654
11655         * aot-compiler.c (emit_plt): Remove some dead code.
11656
11657         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11658
11659         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11660         return the plt info offset belonging to a given plt entry.
11661
11662         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11663         mono_aot_get_plt_info_offset.
11664         
11665         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11666         similar to the amd64 code by makeing jumps through a separate jump table 
11667         instead of embedding the jump addresses into the code.
11668
11669 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11672         method.
11673
11674 2008-07-10  Martin Baulig  <martin@ximian.com>
11675
11676         * mini.c (mini_method_compile): Disable generics sharing when
11677         running in the debugger.
11678
11679 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11680
11681         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11682
11683         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11684         the local register allocator from running out of registers on x86 when 
11685         using aot.
11686
11687 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11688
11689         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11690         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11691         C4146.
11692
11693         Contributed under MIT/X11 license.
11694
11695 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11696
11697         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11698         speed up the assembler.
11699
11700 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11701
11702         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11703         support.
11704
11705         * mini.c: Move the soft float handling macros a bit earlier, add 
11706         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11707         place.
11708
11709         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11710
11711         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11712         read-only to help catch code allocation requests.
11713         
11714         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11715         and turn it off when using --aot-only or when compiling with --aot=full.
11716
11717         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11718         jump table for switches from the normal domain mempool, not the code
11719         manager.
11720
11721         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11722         unbox trampoline which handles aot-only mode too.
11723
11724         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11725         an AOTed unbox trampoline.
11726
11727         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11728
11729 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11730
11731         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11732         ""
11733
11734         Contributed under MIT/X11 license.
11735
11736 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11737
11738         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11739           the unwind information for the method at the end of the allocated block.
11740           
11741         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11742           MonoCompileArch to hold the unwind info for SEH on Winx64
11743         
11744         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11745           frame pointer info for the method being compiled.
11746           
11747         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11748           the call to mono_exception_from_token.
11749           
11750         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11751           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11752           information is stored a the end of the method block because it is all 32-bit offset based.
11753
11754         Contributed under MIT/X11 license.
11755
11756 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11757
11758         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11759
11760         * wapihandles.c: Fix warnings.
11761
11762         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11763         mode.
11764
11765         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11766         mono_jit_compile_method in aot-only mode since that calls the type 
11767         initializer.
11768         
11769         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11770         get_delegate_invoke_impl in aot-only mode.
11771
11772         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11773
11774 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11775
11776         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11777
11778         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11779         is on by default.
11780
11781         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11782
11783         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11784         init trampoline from the AOT file as well.
11785
11786         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11787         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11788         code.
11789
11790         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11791         mono_init.
11792
11793         * exceptions-amd64.c: Add _full variants for the remaining exception code
11794         creation functions as well, allow emission of relocatable code, remove
11795         caching since that is now done by the caller.
11796
11797         * mini-exceptions.c: Add _full variants for the remaining exception code
11798         creation functions as well, add aot-only support.
11799
11800         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11801         if we can determine a proper token for them.
11802         (add_wrappers): Add a few more wrappers.
11803         (emit_method_code): Remove some dead code.
11804         (emit_trampolines): Emit exception code too.
11805
11806         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11807
11808         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11809         mono_array_new_va which avoids varargs.
11810
11811         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11812
11813         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11814         mono_arch_create_specific_trampoline () in all places.
11815
11816         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11817         a bit so it can be used for other things as well.
11818         
11819         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11820         on demand as well.
11821
11822         * exceptions-amd64.c: Rename the caching from the exception code creation
11823         functions, it is done by the caller instead.
11824         
11825         * exceptions-amd64.c: Change the signature of the exception code creation 
11826         functions to allow the creation of relocatable code later.
11827
11828         * mini-exceptions.c: Add a set of functions to query the various 
11829         runtime-generated exception functions.
11830
11831         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11832         mono_arch_.. () functions.
11833         
11834 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11837
11838         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11839
11840         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11841         (mini_get_vtable_trampoline): Ditto.
11842
11843         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11844         code in the AOT case by returning the code size and a list of relocations to
11845         the caller.
11846
11847         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11848
11849 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11850
11851         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11852           clean the stack.
11853
11854         Contributed under MIT/X11 license.
11855
11856 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11857
11858         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11859         so the buffer size can be computed correctly. Fixes #404735.
11860
11861         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11862         normally as cfg->debug_info is already freed.
11863
11864 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11865
11866         * mini-amd64.c: For calls returning vtypes in registers, don't store
11867         the return address on the stack, instead allocate a separate local for
11868         it. Fixes #404729.
11869
11870 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11871
11872         * mini-trampolines.c, mini.h: Add an argument to
11873         mono_create_jit_trampoline_in_domain() for turning off the adding
11874         of the sync wrapper.
11875
11876         * mini.c: Use the JIT trampoline without sync instead of
11877         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11878         be patched.
11879
11880 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11881
11882         * driver.c: Turn on GSHARED optimization by default.
11883
11884 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11885
11886         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11887         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11888
11889         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11890         create a variant of the generic trampoline code callable from AOTed trampolines.
11891
11892         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11893         trampoline code callable from AOTed trampolines.
11894
11895         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11896
11897 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11898
11899         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11900         pass-through manner.
11901
11902         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11903         and don't fail sharing for them anymore.
11904
11905         * mini-exceptions.c: Handle exceptions in shared generic methods.
11906
11907         * generic-sharing.c: When checking the context of a generic
11908         method, also check its class's context.  Don't treat wrappers as
11909         sharable.
11910
11911         * mini-trampolines.c: Some code factored out to
11912         metadata/generic-sharing.c.  Handle the MRGCTX case.
11913
11914         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11915         we must deal with the method being of another instantiation of the
11916         class.  Add static rgctx invoke wrappers to generic methods.
11917
11918 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11919
11920         * mini.c: Provide all jit infos of generic shared methods with a
11921         generic jit info.
11922
11923         * mini-exceptions.c: Handle the new situation that a generic info
11924         might be available, but not info about the this/vtable/mrgctx
11925         variable.
11926
11927 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11928
11929         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11930         generic methods.
11931
11932 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11933
11934         * dominators.c (check_dominance_frontier): Fix a warning.
11935
11936         * mini.h: Add some missing prototypes.
11937
11938         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11939
11940         * driver.c (mono_jit_init_version): Correct the comments since the first
11941         argument should be the name of the root domain, not a filename.
11942
11943         * aot-runtime.c (make_writable): Error out if this is called while running
11944         with --aot-only.
11945         (load_aot_module): Ditto.
11946
11947         * aot-compiler.c: Really fix the computation of method indexes.
11948
11949         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11950         optimizations as this is no longer called frequently.
11951
11952         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11953         method and the invoke impl code and pass it to the delegate trampoline instead of
11954         just the delegate class.
11955
11956 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11957
11958         * aot-compiler.c: Fixup the computation of method indexes.
11959         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11960         the method builder infrastructure.
11961
11962         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11963         has no header.
11964
11965         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11966         mode, load the method right away instead of creating a trampoline.
11967
11968         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11969
11970         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11971         some checks a bit.
11972
11973 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11976         (mono_aot_load_method): Use method_index instead of method->token.
11977
11978         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11979         can handle icalls etc. properly.
11980
11981         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11982
11983         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11984
11985         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11986         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11987         JIT_ICALL_ADDR patch type.
11988
11989         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11990
11991         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11992         request flag.
11993         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11994
11995         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11996
11997 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11998
11999         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12000         domain->jit_code_hash.
12001
12002 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12003
12004         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12005
12006 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12009         get_this_arg_from_call, let it compute it when needed.
12010
12011         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12012         gsctx from code only when needed.
12013
12014         * mini-trampolines.c (get_generic_context): Rename this to 
12015         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12016         it can be called by the arch backends.
12017
12018         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12019
12020 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12021
12022         * driver.c (mono_main): Add experimental --aot-only command line option.
12023
12024         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12025         set.
12026
12027 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12028
12029         * driver.c (DllMain): Remove mono_module_handle.
12030
12031         Contributed under MIT/X11 license.
12032
12033 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12036         for emitting methods which are not in the source assembly. Detect and report
12037         failure of assembling+linking.
12038         
12039         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12040
12041         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12042
12043 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12044
12045         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12046
12047 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12048
12049         * mini.h: Remove some obsolete prototypes.
12050
12051         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12052
12053 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12054
12055         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12056         supported by Visual Studio, so use alloca().
12057
12058 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12059
12060         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12061         Fixes #402585.
12062
12063 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12064
12065         * mini.c: Fail sharing of a generic method if it contains an open
12066         catch clause (because we don't pass MRGCTXs yet).
12067
12068 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12069
12070         * mini.c: When compiling a method with generic sharing, insert the
12071         method instantiated with an all-Object generic context into the
12072         jit info table, instead of the context of the first instantiation
12073         of the method we happen to compile.
12074
12075 2008-06-18  Martin Baulig  <martin@ximian.com>
12076
12077         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12078         `major_version' and `minor_version'.
12079
12080 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12081
12082         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12083         mono_method_is_generic_sharable_impl() takes an additional
12084         argument specifying whether to treat type variables as reference
12085         types.
12086
12087 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12088
12089         * mini.h: Removed obsolete prototypes.
12090
12091 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12092
12093         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12094         already handle them.
12095
12096 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12097
12098         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12099         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12100         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12101         tramp-x86.c: Added a MonoGenericContext* argument to
12102         mono_arch_get_unbox_trampoline() so that it can call other
12103         functions which require it.
12104
12105 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12106
12107         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12108         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12109         mono_arch_get_this_arg_from_call() takes a
12110         MonoGenericSharingContext* as well.
12111
12112 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12113
12114         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12115         implement generic sharing of unbox.
12116
12117 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12118
12119         * mini.c: Don't compute the vtable to determine whether a field is
12120         special static, because it might not work for open types.
12121
12122 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12123
12124         * mini.c: Removed the unused token_type and token_source arguments
12125         from get_runtime_generic_context_ptr().
12126
12127 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12128
12129         * mini.c (ADD_BINOP): fix the build
12130
12131 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12132
12133         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12134         a widening op.
12135
12136 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12137
12138         * mini.h: Removed class relations enum that's not used anymore.
12139
12140 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12141
12142         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12143
12144         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12145         the lazy fetch trampoline access code.
12146
12147 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12148
12149         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12150
12151 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12154
12155         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12156
12157         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12158
12159 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12160
12161         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12162         intrinsics.
12163
12164         * mini-ops.h: Add MIN/MAX_UN opcodes.
12165
12166         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12167         intrinsics.
12168
12169         * basic-math.cs: Add more min/max tests.
12170
12171         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12172
12173 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12174
12175         * mini.c: Small fix in the prologue of emit_castclass.
12176
12177 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12178
12179         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12180
12181         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12182         do not work even for unsigned types. Fixes #400014.
12183
12184         * basic-math.cs: Add regression tests for unsigned Min/Max.
12185
12186 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12187
12188         * mini.c: Added additional context_used argument to several
12189         functions, which will be needed for sharing generic methods.  Use
12190         GET_RGCTX macro wherever appropriate.  Declare only one
12191         context_used in mono_method_to_ir().
12192
12193 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12194
12195         * mini.c, generic-sharing.c: Removed generic class relations.
12196
12197         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12198         functions due to MRGCTX changes.
12199
12200 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12201
12202         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12203         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12204         with calculated IMT.
12205
12206         * mini.c: Generic sharing of calls via generic interfaces.
12207
12208         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12209         generic method with non-constant MonoGenericContext*.  Instead,
12210         the context is taken out of the method itself.
12211
12212 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12213
12214         * mini.c: Generic sharing of ldvirtftn.
12215
12216 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12217
12218         * mini.c: Generic sharing of ldftn.
12219
12220 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12221
12222         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12223
12224 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12225
12226         * mini.c: Generic sharing of the special case of ldtoken followed
12227         by a call to GetTypeFromHandle.
12228
12229 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12230
12231         * mini.c: Generic sharing of box for nullable types.
12232
12233 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12234
12235         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12236         are passed on the stack. Fixes #324807.
12237
12238 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12239
12240         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12241         for the ArgValuetypeAddrInIReg case.
12242
12243         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12244         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12245
12246         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12247         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12248         local variable and pass the local variable by reference to the called method.
12249           
12250         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12251         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12252
12253         Contributed under MIT/X11 license.
12254
12255 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12256
12257         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12258
12259         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12260         everything.
12261
12262 2008-06-10  Martin Baulig  <martin@ximian.com>
12263
12264         * debug-mini.c
12265         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12266
12267 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12268
12269         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12270         possible error when no arguments are passed.
12271
12272         Contributed under MIT/X11 license.
12273
12274 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12275
12276         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12277         where the file name is NULL.
12278
12279 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12280
12281         * mini.c: Fix s390 build.
12282
12283 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * trace.c (mono_trace_parse_options): Fix warnings.
12286
12287         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12288
12289 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * mini.c (remove_block_if_useless): Avoid printing the method name.
12292         
12293         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12294         MONO_INST_NEW.
12295
12296         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12297         LMF. Not yet used.
12298
12299         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12300         translated code after it has been patched.
12301
12302 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12303
12304         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12305         avoid problems during code patching on SMP systems.
12306         (emit_call): Avoid adding a patch info which is already added by 
12307         emit_call_body.
12308         (mono_arch_emit_exceptions): Ditto.
12309
12310 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12311
12312         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12313         MONO_TYPE_ISSTRUCT already checks for it.
12314
12315 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12316
12317         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12318           structs with floats on Winx64 the float registers are not used.  
12319           The integer registers are always used..
12320         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12321           only one register will be used and only if the size of the struct 
12322           is 1,2,4, or 8 bytes.
12323
12324         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12325           to work for Winx64.
12326
12327         Contributed under MIT/X11 license.
12328
12329 2008-06-05  Martin Baulig  <martin@ximian.com>
12330
12331         * debug-debugger.c (debugger_lookup_class): Also call
12332         mono_class_setup_methods() here; we're only called from RTI.
12333
12334 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12335
12336         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12337         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12338         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12339         Post-process object files and add dtrace-generated object, if necessary.
12340
12341         Contributed under MIT/X11 license.
12342
12343 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12344
12345         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12346         element class.
12347
12348         * mini.c: Generic sharing for unbox.any and castclass.
12349
12350 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12351
12352         * mini.c: Ignore tailcall prefix in shared generic code and when
12353         doing calls which require a vtable/rgctx argument.
12354
12355 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12356
12357         * mini.c: Don't free the JIT info.
12358
12359         * driver.c: Changes in the JIT info table testing code.
12360
12361 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12362
12363         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12364         interruption. Fix some warnings.
12365
12366         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12367         interruption_checkpoint.
12368
12369 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12370
12371         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12372         from embedding applications.
12373
12374 2008-06-02  William Holmes  <billholmes54@gmail.com>
12375
12376         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12377           reserving 32 bytes on the stack when making calls. 
12378
12379         Contributed under MIT/X11 license.
12380
12381 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12384         the linear IL branch.
12385
12386         * driver.c: Print out more information for --version on arm.
12387
12388 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12389
12390         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12391         bb_exit instead, since out of line bblocks might not actually be emitted
12392         out-of-line.
12393         
12394         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12395         maximum epilog size for out of line bblocks if tracing is enabled.
12396
12397         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12398
12399 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12400
12401         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12402
12403 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12406         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12407         opcodes.
12408
12409 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12410
12411         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12412         the 'value' to store is a constant.
12413
12414         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12415
12416         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12417         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12418
12419 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12420
12421         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12422         for accessing method->generic_container.
12423
12424 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12425
12426         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12427         
12428         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12429
12430         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12431
12432         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12433         fails.
12434
12435 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12436
12437         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12438
12439         * mini.c: Handle the case when mono_class_vtable () fails.
12440
12441 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12442         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12443         the stat profiler.
12444
12445 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12446
12447         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12448         together with domain sharing.
12449
12450 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12451
12452         * mini.c: Treat callvirts to final methods like non-virtual calls
12453         when doing generic sharing, i.e. look them up in the runtime
12454         generic context.
12455
12456 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12457
12458         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12459         with computed types (for generic sharing).
12460
12461         * mini.c: Generic sharing for mkrefany and refanyval.
12462
12463 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12464
12465         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12466         possible.
12467
12468         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12469         the generic sharing code.
12470         
12471         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12472         when needed.
12473
12474 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12475
12476         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12477
12478 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12479
12480         * driver.c: updated copyright date
12481
12482 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12485         needed.
12486
12487 2008-05-19  Martin Baulig  <martin@ximian.com>
12488
12489         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12490         pointing to the new `_mono_debug_using_mono_debugger' variable.
12491
12492         * driver.c
12493         (mono_main): Check mono_debug_using_mono_debugger() rather than
12494         the `MONO_INSIDE_MDB' environment variable to check whether we're
12495         inside the debugger.
12496
12497 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12498
12499         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12500         argument.
12501
12502 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12503
12504         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12505
12506         * mini.c: Added mini_assembly_can_skip_verification. This
12507         function checks if the assembly requested to skip verification. 
12508         Fixes part of #387274.
12509
12510 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12511
12512         * mini.c (mini_get_method): Disable the check for open generic classes when
12513         using generic sharing.
12514
12515         * generics.cs: Add a test for #387034.
12516
12517         * mini.c (mini_get_method): Check whenever the method class is an open generic
12518         type, and return NULL in that case, causing a verification error. Fixes
12519         #384123.
12520
12521 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12522
12523         * driver.c (mono_main): Revert r102623. The right
12524         thing to do is to enable the verifier under verifiable
12525         unless a --security flag was passed.
12526
12527         We need this non-trivial behavior for --verify-all otherwise
12528         mcs-compileall won't be able to use it. As it needs everything to
12529         be verified under validil.
12530
12531 2008-05-06  Martin Baulig  <martin@ximian.com>
12532
12533         Fix #383749.
12534
12535         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12536         (mono_debugger_thread_cleanup): Likewise.
12537         (mono_debugger_extended_notification): Likewise.
12538
12539 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12540
12541         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12542         against both inflated and non-inflated methods. We need to check against the
12543         generic definition for cases where the instantiated method is not visible.
12544         We need to check against the inflated types for cases where the instantiation
12545         changes any super type. This fixes #382986.
12546
12547         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12548         that check for visibiliy as generic params only appears as the type subject
12549         of tokens on call opcodes. Field manipulation and ldftn must always
12550         target an exact type.
12551
12552 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12553
12554         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12555         if no related --security flag is passed.
12556
12557 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12558
12559         * mini-arch.h: Prepare support for ppc64.
12560
12561         Contributed under MIT/X11 license.
12562
12563 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12564
12565         * aot-runtime.c: Prepare support for ppc64.
12566
12567         Contributed under MIT/X11 license.
12568
12569 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12570
12571         * mini-ops.h: Prepare support for ppc64.
12572
12573         Contributed under MIT/X11 license.
12574
12575 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12576
12577         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12578
12579         Contributed under MIT/X11 license.
12580
12581 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12582
12583         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12584         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12585         assemblies on windows.
12586
12587 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12588
12589         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12590         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12591         * main.c: Use UTF-8 encoded command line instead of Windows default code
12592         page on Windows to support Unicode.
12593         * driver.c (DllMain): New function for mixed-mode assembly support.
12594         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12595         export __stdcall functions without decoration.
12596
12597         Contributed under MIT/X11 license.
12598
12599 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12600
12601         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12602         saving it very early.
12603
12604 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12605
12606         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12607         deleted.  The only way to access the new RGCTX is via the
12608         trampline.
12609
12610         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12611         vtable instead of the RGCTX to static methods.
12612
12613         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12614         accessing the new RGCTX.
12615
12616         * generic-sharing.c: There is no separation between self, type
12617         arguments and other types in the RGCTX anymore.
12618
12619 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12620
12621         * mini-amd64.c (add_general): Remove previous stack adjustment.
12622         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12623         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12624         for 32 bytes of stack space reserved for all calls.
12625         
12626         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12627         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12628         adjustment.
12629         
12630         Code contributed under MIT/X11 license.
12631
12632 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12633
12634         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12635         against the root definition, peeling out method and type instantiations.
12636         Cache verify success results, code that fails verification is still
12637         checked multiple times.
12638
12639 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12640
12641         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12642
12643 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12644
12645         * mini-amd64.c (add_general): Always increment stack on Win64.
12646         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12647         on Win64.
12648         
12649         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12650         stack based argument handling on Win64.
12651         
12652         Code contributed under MIT/X11 license.
12653
12654 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12655
12656         * Makefile.am (version.h): Add support for git-svn.
12657
12658 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12659
12660         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12661         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12662         avoiding allocations and libc functions which might deadlock.
12663         
12664         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12665         'no-gdb-backtrace' option is set.
12666
12667         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12668
12669         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12670
12671 2008-04-21  Martin Baulig  <martin@ximian.com>
12672
12673         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12674         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12675
12676 2008-04-21  Martin Baulig  <martin@ximian.com>
12677
12678         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12679         `thread_vtable', `event_handler_ptr' and `event_handler'.
12680
12681 2008-04-21  Martin Baulig  <martin@ximian.com>
12682
12683         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12684         allows delayed initialization of the `executable_code_buffer' when
12685         attaching.
12686
12687 2008-04-21  Martin Baulig  <martin@ximian.com>
12688
12689         * mini.h (mono_debugger_create_notification_function): Removed.
12690         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12691
12692         * mdb-debug-info64.s
12693         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12694
12695         * mdb-debug-info32.s
12696         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12697
12698         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12699         currently only works on x86 and x86_64, so don't create it on ppc.
12700
12701 2008-04-21  Martin Baulig  <martin@ximian.com>
12702
12703         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12704
12705         * mini.c
12706         (mini_method_compile): In the fp elimination check, check
12707         `debug_options.mdb_optimizations' in addition to
12708         mono_debug_using_mono_debugger().       
12709
12710         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12711         disable some JIT optimizations which are only disabled when
12712         running inside the debugger.
12713         Added `--help-debug' option to describe the debugging options.
12714         (parse_debug_options): New static function to parse the `--debug'
12715         options, so we can easily add more stuff in future.
12716
12717 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12718
12719         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12720         the method has no body.
12721
12722 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12723
12724         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12725         assembly is not allowed in MSVC 64-bit compiler. 
12726         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12727         as we get floating point exceptions everywhere.
12728         
12729         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12730         correctly align arguments for call to throw_exception.
12731         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12732         
12733         Code contributed under MIT/X11 license.
12734
12735 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12736
12737         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12738
12739 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12740
12741         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12742
12743         * mini-amd64.c (NEW_INS): Set cil_code.
12744
12745         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12746         from mini-amd64.c so all debugger related logic is in one place.
12747
12748         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12749         later won't have a random ip assigned to them.
12750
12751 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12752
12753         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12754         the arch specific function initializes code_size.
12755         (mono_create_delegate_trampoline): Ditto.
12756
12757         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12758         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12759         platforms.
12760
12761         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12762         running under the debugger.
12763
12764         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12765         debugger.
12766
12767         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12768         debugger. Also move the disabling of optimizations here from driver.c.
12769         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12770         debugger.
12771
12772         * mini.h (MonoCompile): Add a few new flags.
12773
12774 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12775
12776         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12777         so the cil_code field of created MonoInst's is properly set.
12778         (mini_select_instructions): Ditto.
12779
12780         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12781         (MONO_INST_NEW_CALL): Ditto.
12782
12783         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12784         in many places so the ins->cil_code field is properly initialized.
12785
12786         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12787         place.
12788
12789 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12790
12791         * mini.c (mini_method_compile): Print a different message when compiling a 
12792         shared method.
12793         
12794         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12795         > 1.
12796
12797 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12798
12799         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12800         SSE2 instructions.
12801
12802         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12803         
12804 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12805
12806         * mini.c (handle_stack_args): Make this return void since its return value was
12807         never used. Also set cfg->unverifiable for invalid IL instead of calling
12808         G_BREAKPOINT ().
12809
12810 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12811
12812         * mini.c: Make sure "this" is live in catch clauses with type
12813         variables in shared generic code.
12814
12815 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12816
12817         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12818         generic_class_is_reference_type() to ensure the proper behaviour
12819         when sharing generic code and the type in question is a type
12820         argument.
12821
12822 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12823
12824         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12825         race conditions when printing thread dumps. Fixes #377738.
12826
12827 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12828         
12829         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12830         shows up when both MonoInst arguments can cause aliasig.
12831         There is likely no way in the current JIT to trigger this problem, but
12832         it showed up in the development of generics sharing, when in a new
12833         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12834         When the generics sharing code will be committed, its tests will be
12835         valid also for this bug.
12836
12837 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12840         PATCH_INFO_METHOD.
12841
12842         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12843         NULL.
12844
12845 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12846
12847         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12848         use a more detailed exception message for InvalidCastException.
12849
12850         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12851
12852         * driver.c (mono_main): Add --debug=casts option to turn on better 
12853         InvalidCastException message details.
12854
12855         * mini.c (mini_get_debug_options): New helper function to return the address of
12856         the debug_options variable.
12857
12858         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12859         the jit_tls TLS variable.
12860
12861         * mini.c (mono_jit_tls): New TLS variable.
12862
12863         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12864         option is used.
12865
12866 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12867
12868         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12869
12870         * mini.c: Removed verifer related stuff, code moved to verify.c.
12871
12872         * driver.c: Using code from verify.c instead of mini.c.
12873
12874 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12875
12876         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12877         longer valid.
12878
12879 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12880
12881         * mini.c (check_for_method_verify): Enabling verification of
12882         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12883         have been fixed.
12884
12885 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12886
12887         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12888         caller saved registers as well.
12889         
12890         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12891         saved registers as well.
12892
12893 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12894
12895         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12896
12897         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12898         code.
12899
12900 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12901
12902         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12903         to get_call_info.
12904         (get_call_info): Take a gsctx argument instead of 'cfg'.
12905
12906 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12907
12908         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12909         mono_verify_all is set.
12910
12911         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12912
12913         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12914
12915 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12916
12917         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12918         an exception.
12919
12920         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12921         verifier and the code generated by the compiler.
12922
12923 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12924
12925         * mini.c: Generic sharing of the non-nullable case of the box
12926         instruction.
12927
12928 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12929
12930         * inssel.brg: Fix the build.
12931
12932         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12933
12934 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12935
12936         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12937         Array:Address. Fixes #372410.
12938
12939         * iltests.il.in: New tests for readonly prefix.
12940
12941 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12942
12943         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12944         mini-trampolines.c.
12945
12946         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12947         mini-exceptions.c.
12948
12949         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12950         
12951         * mini.c (mono_decompose_op_imm): New helper function.
12952
12953         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12954         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12955         return value.
12956
12957         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12958         mono_arch_output_basic_block. Fix warnings.
12959
12960         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12961         for now.
12962
12963 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12964
12965         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12966         since the extra frame is now detected automatically inside the loop.
12967
12968         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12969         opts which are now in mono_peephole_ins ().
12970         
12971         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12972
12973         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12974         frames and skip duplicate managed-to-native frames. Fixes #367665.
12975
12976         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12977         opts which are now in mono_peephole_ins ().
12978         (mono_arch_peephole_pass_2): Ditto.
12979
12980         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12981
12982         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12983         arch independent peephole optimizations.
12984
12985         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12986         opts which are now in mono_peephole_ins ().
12987
12988         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12989         
12990         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12991
12992         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12993         pattern.
12994
12995         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12996         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12997         opcode. 
12998
12999 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13000
13001         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13002         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13003         return value.
13004
13005         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13006         mono_arch_output_basic_block. Fix warnings.
13007
13008 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13009
13010         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13011         conv.ovf.u.un.
13012
13013 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13014
13015         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13016         conv.ovf.u.un.
13017
13018         * iltests.il: Add new tests.
13019
13020 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13021
13022         * mini.c: Removed Windows version macros.
13023
13024 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13025
13026         * generic-sharing.c: Put reflection types in the extensible part
13027         of the runtime generic context.
13028
13029         * mini.c: Generic sharing of the GetTypeHandle special case of the
13030         ldtoken instruction.
13031
13032 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13033
13034         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13035
13036         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13037         
13038         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13039         consistency with the other version on the linear IR branch.
13040
13041         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13042
13043         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13044
13045         * iltests.il.in: Add new tests.
13046
13047 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13048
13049         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13050
13051         * iltests.il.in: Add new tests.
13052
13053 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13054
13055         * mini.c: Two variables with the same name were declared in
13056         nesting contexts and one wasn't initialized.  Fixed.
13057
13058 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13059
13060         * mini.c: Generic sharing of the initobj instruction.
13061
13062 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13063
13064         * mini.c: make the test to optimize ldtoken from typeof() more
13065         precise.
13066
13067 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13068
13069         * mini.c: Generic sharing of the initobj instruction for reference
13070         types.
13071
13072 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13073
13074         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13075         the mono_breakpoint_clean_code() code to perform bound checks.
13076
13077 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13078
13079         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13080         mono_arch_patch_callsite() to include the start of the managed method
13081         to be able to perform bound checks.
13082
13083 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13084
13085         * mini.c: Generic sharing for the isinst instruction.
13086
13087 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13088
13089         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13090         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13091         with the runtime generic context argument.
13092
13093         * mini.c: Share calls to several types of unsharable methods by
13094         putting the address of the method code in the runtime generic
13095         context and doing an indirect call.
13096
13097         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13098         to switches.
13099
13100 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13101
13102         * generic-sharing.c: Change due to a change in the runtime genric
13103         context API.
13104
13105 2008-03-15  Martin Baulig  <martin@ximian.com>
13106
13107         * tramp-x86.c
13108         (mono_arch_nullify_class_init_trampoline): Add call to
13109         mono_breakpoint_clean_code() to make things work when running
13110         inside the debugger.
13111
13112         * tramp-amd64.c
13113         (mono_arch_nullify_class_init_trampoline): Add call to
13114         mono_breakpoint_clean_code() to make things work when running
13115         inside the debugger.
13116
13117 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13118
13119         * inssel-long.brg (reg): Fix 64 bit build.
13120
13121 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13122
13123         * mini.c, mini.h: Share static generic code by passing it an
13124         implicit argument pointing to the runtime generic context.
13125
13126         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13127         inssel-long32-mips.brg: New opcodes for calling shared static,
13128         which need to be passed the runtime generic context.
13129
13130         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13131         argument on the stack in the prologue if needed.  New function for
13132         finding the runtime generic context argument from the registers
13133         saved by the trampoline.
13134
13135         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13136         runtime generic context argument.
13137
13138         * tramp-amd64.c: Also restore the register used for the runtime
13139         generic context argument.
13140
13141         * mini-trampoline.c: Resolve shared static calls by consulting the
13142         runtime generic context via the new argument.
13143
13144         * generic-sharing.c: Add an argument to sharability-checking
13145         functions that specifies whether type variables should be treated
13146         as sharable type arguments.
13147
13148         * inssel-x86.brg: Removed a superfluous, buggy rule.
13149
13150         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13151         to switches.
13152
13153 2008-03-14  Martin Baulig  <martin@ximian.com>
13154
13155         * debug-debugger.c (main_thread_handler): Call
13156         mono_runtime_run_main() without sending any notifications.
13157
13158         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13159
13160 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13161
13162         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13163
13164 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13165
13166         * tramp-x86.c: Fixed register restore offsets in the trampoline
13167         code for ECX and EDX.
13168
13169 2008-03-12  Geoff Norton  <gnorton@novell.com>
13170
13171         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13172         different ucontext_t implementations.
13173         * exceptions-arm.c: Use the above defines to get exceptions working on 
13174         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13175         * mini-arm.c: Implement iPhone icache support (based on a patch by
13176         Luke Howard lukeh@padl.com)
13177
13178 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13179
13180         * mini.c: Enable generic sharing of calls to non-static
13181         non-interface non-generic non-value-type methods.
13182
13183         * mini-trampolines.c: Resolve calls from shared generic code.
13184
13185 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13186
13187         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13188
13189         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13190
13191 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13192
13193         * mini.c: some fixes for the AOT compiler.
13194
13195 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13196
13197         * cpu-amd64.md: Add clob:1 to some float opcodes.
13198
13199 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13200
13201         * mini.h: Added MiniVerifierMode enumeration.
13202
13203         * mini.c: Added mini_verifier_set_mode to control
13204         the usage of the new verifier.
13205
13206         * mini.c (mono_method): Integrated the new verifier.
13207
13208         * driver.c: Extended --security option with validil and
13209         verifiable options to activate the new verifier.
13210
13211 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13212
13213         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13214         optimization to ctors taking 0 or 2 arguments too.
13215
13216         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13217         a bit.
13218
13219         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13220
13221         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13222
13223 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13224
13225         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13226         non-aot case as well.
13227
13228         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13229
13230         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13231         changes.
13232
13233         * aot-compiler.c (encode_patch): Ditto.
13234
13235         * mini.h (G_MININT32): Fix the definition of this.
13236
13237 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13238
13239         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13240
13241         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13242
13243 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13244
13245         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13246         methods returning vtypes in registers.
13247         (mono_arch_allocate_vars): Ditto.
13248
13249         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13250
13251         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13252
13253         * generics.cs: Add a test from the linear IR branch.
13254
13255         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13256
13257         * mini.c (inline_method): Cache failed inline attempts.
13258
13259 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13260
13261         * mini.c: For shared methods of generic classes put the location
13262         of "this" into the MonoGenericJitInfo.
13263
13264         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13265         register out of a MonoContext by register number.  Add the generic
13266         sharing context as an argument to mono_arch_find_this_argument().
13267
13268         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13269         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13270         for new arch function.
13271
13272         * mini-exception.c: Handle open exception clauses in shared
13273         generic code.
13274
13275         * mini-trampolines.c: Supply additional argument to
13276         mono_arch_find_this_argument().
13277
13278 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13279
13280         * Makefile.am (regtests): Run the bench.exe tests last.
13281
13282 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13283
13284         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13285         a bit.
13286
13287 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13288
13289         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13290         with MS.
13291
13292         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13293         
13294         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13295
13296         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13297         whose class has no cctor.
13298
13299         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13300
13301 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13304         unverified.
13305
13306 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13307
13308         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13309         to be in sync with the code on the linear IR branch.
13310
13311         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13312
13313         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13314
13315 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13316
13317         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13318
13319         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13320
13321         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13322
13323         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13324
13325         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13326         
13327         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13328         body.
13329
13330 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13331
13332         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13333         OP_LOADR4_MEMBASE emission.
13334
13335         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13336         (mono_spillvar_offset_float): Ditto.
13337
13338         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13339
13340         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13341         emission.
13342
13343         * basic-long.cs: Add regression tests for them.
13344
13345         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13346         use.
13347         (mono_arch_allocate_vars): Fix representation of single-precision float
13348         argument.
13349         (mono_arch_output_basic_block): Ditto.
13350
13351         * inssel-mips.brg: Ditto, remove duplicate items.
13352
13353         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13354         arguments of tail calls as on other platforms.
13355         (mono_arch_output_basic_block): Handle tail calls.
13356
13357         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13358         register.
13359
13360         * objects.cs (test_5_pass_static_struct): Add test for it.
13361
13362         Contributed under MIT/X11 license.
13363
13364 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13365
13366         * Makefile.am: Use gmcs for compiling the regression tests.
13367
13368         * *.2.cs *.2.il: Rename to *.cs and *.il.
13369
13370 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13371
13372         * regalloc.h: Make the vassign array smaller.
13373
13374         * mini.c (mini_method_compile): Remove an unused field in cfg.
13375
13376         * mini-codegen.c: Add a bunch of micro optimizations.
13377
13378 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13379
13380         * regalloc.h: Remove some unused fields.
13381
13382 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13385
13386         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13387
13388 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13389
13390         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13391
13392         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13393         trampoline: Fetch an entry from the runtime generic context.  If
13394         it's NULL, jump to the actual trampoline to fill the runtime
13395         generic context.  Otherwise, return it.
13396
13397         * mini.c: Call the lazy fetch trampoline to get entries out of the
13398         runtime generic context.
13399
13400         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13401         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13402         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13403
13404 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13405
13406         * mini.c: Fetch data out of the extensible part of the runtime
13407         generic context instead of calling a helper function.
13408
13409         * generic-sharing.c: Some functions moved into
13410         metadata/generic-sharing.c.  Helper function for fetching other
13411         types now checks and asserts against extensible rgctx (just for
13412         debugging purposes - the helper function isn't called anymore
13413         unless for debugging).
13414
13415 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13416
13417         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13418         for tail calls up to the point that the tests in iltests.exe run. Also add a
13419         dummy CKFINITE implementation.
13420         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13421         needed for trampoline LMF frames.
13422
13423         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13424         trampoline LMF frames.
13425
13426 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13427
13428         * mini.c (inline_method): clean any pending loader error when inlining fail.
13429         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13430
13431 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13432
13433         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13434
13435         * aot-runtime.c (decode_patch_info): Ditto.
13436
13437         * mini.c (mono_resolve_patch_target): Ditto.
13438         
13439         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13440         icall wrappers.
13441
13442         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13443         
13444         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13445         if it references an icall address.
13446
13447 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13448
13449         * cpu-s390x.md: Remove some more unused opcodes.
13450         
13451         * cpu-s390x.md: Remove some unused opcodes.
13452
13453         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13454         mono_op_imm_to_op ().
13455
13456         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13457         instead of a switch statement.
13458         
13459         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13460         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13461
13462         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13463         
13464         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13465
13466         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13467         -1.
13468
13469 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13472         opened. Fixes #362607.
13473
13474         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13475
13476         * iltests.il.in: Add a test for static methods in interfaces.
13477
13478 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * genmdesc.c (build_table): Fix a crash on older glib versions.
13481
13482         * cpu-sparc.md: Remove some unused opcodes.
13483         
13484         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13485         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13486
13487         * cpu-amd64.md: Remove some unused opcodes.
13488
13489         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13490         like the other opcodes.
13491
13492 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13493
13494         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13495
13496         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13497
13498         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13499         variables 'cfg' instead of 'm' for consistency.
13500
13501         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13502
13503         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13504         argument holding the vtype return address, to avoid the ambigious use of
13505         cfg->ret for this purpose.
13506
13507         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13508
13509         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13510         
13511         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13512         new mono_print_ins () function which only takes one argument.
13513
13514 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13515
13516         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13517         macro arguments.
13518
13519 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13520
13521         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13522
13523         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13524
13525         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13526         opcodes and other small changes.
13527
13528         * mini-ops.h: Add some new opcodes from the linear IR branch.
13529
13530         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13531
13532         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13533         opcodes, use the REG_MEMBASE opcodes instead.
13534         
13535         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13536         opcodes, use the REG_MEMBASE opcodes instead.
13537         
13538         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13539         linear IR branch.
13540
13541         * mini.c (mono_op_imm_to_op): New helper function.
13542
13543         * mini-ops.h: Add some opcodes from linear IR branch.
13544
13545 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13546
13547         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13548         <tsv@solvo.ru>.
13549
13550 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13551
13552         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13553         OP_ICONV_TO_R4/R8.
13554
13555         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13556
13557 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13558
13559         * aot-compiler.c (emit_method_code): Add an assert.
13560
13561         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13562         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13563         methods.
13564
13565 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13566
13567         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13568         some load/store opcodes so they are consistent. 
13569         (mono_arch_emit_prolog): Simplify some code.
13570
13571         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13572
13573         * objects.cs: Add tests for large argument offsets on ARM.
13574
13575         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13576         stack offsets. Fixes #359651.
13577
13578         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13579
13580         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13581
13582         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13583
13584         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13585
13586         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13587
13588         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13589         rid of CEE_CONV_R_UN.
13590
13591         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13592
13593 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13594
13595         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13596
13597         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13598
13599         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13600
13601         * cpu-amd64.md: Remove some unused opcodes.
13602
13603         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13604
13605         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13606
13607         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13608         arch specific functions for its parts. Call the peephole pass after local
13609         regalloc so the prolog can compute a more accurate max_offset.
13610         
13611         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13612         the corresponding OP_I/OP_L opcodes.
13613
13614         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13615
13616         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13617
13618 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13619
13620         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13621         as they are handled in mini.c.
13622
13623         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13624         
13625         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13626         case since it is handled in mini.c.
13627
13628         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13629
13630         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13631
13632         * *.c: Use the new opcodes in the IR and back end code.
13633
13634         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13635
13636         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13637
13638 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13639
13640         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13641         an assert because it has a race condition.
13642
13643 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13644
13645         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13646
13647         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13648
13649         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13650
13651         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13652         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13653
13654 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13655
13656         * cpu-amd64.md (move): Correct the maximum size of move.
13657
13658 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13659
13660         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13661         the generic class init trampoline to return quickly if the class
13662         is already inited.
13663
13664 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13665
13666         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13667         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13668
13669 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13670
13671         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13672         branch.
13673
13674 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13675
13676         * objects.cs: Add some soft-float tests.
13677
13678         * mini.c: Fix a couple more soft-float issues.
13679
13680         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13681
13682         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13683         avoid a REX prefix.
13684
13685 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13686
13687         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13688         exception happens while compiling a virtual method.
13689
13690 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13691
13692         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13693         
13694         * mini-sparc.c: Fix build.
13695
13696         * mini-sparc.c (get_call_info): Add support for generic sharing.
13697
13698         * mini-exceptions.c: Add a FIXME.
13699
13700 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13701
13702         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13703         altstack handling code.
13704
13705         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13706         
13707         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13708
13709         * mini-s390.c: Add support for generic sharing.
13710
13711         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13712         Fix CAS on s390.
13713         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13714
13715         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13716
13717         * mini-s390x.c: Add support for generic sharing.
13718         
13719         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13720         Fix CAS on ia64.
13721         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13722
13723         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13724         can be used since it takes a 16 bit signed immediate.
13725
13726         * inssel-s390x.brg: Fix OP_SETRET.
13727
13728         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13729
13730         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13731
13732         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13733
13734         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13735
13736         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13737         in one place.
13738
13739         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13740         stuff.
13741
13742         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13743         of the unused mono_arch_patch_delegate_trampoline stuff.
13744
13745 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13746
13747         * basic-long.cs: Move the fp related tests to basic-float.cs.
13748
13749         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13750
13751         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13752
13753         * basic-calls.cs: Add a test for proper float argument passing.
13754
13755         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13756         if the context corresponds to an exception received through a signal.
13757
13758         * exceptions.cs: Add a test for nullref handling at the start of a try
13759         clause.
13760
13761         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13762
13763         * jit-icalls.c (mono_break): New JIT icall.
13764
13765         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13766
13767         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13768
13769 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13770
13771         * cpu-*.md: Get rid of unused opcodes.
13772
13773         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13774
13775         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13776         by all platforms.
13777
13778         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13779         define.
13780
13781         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13782         the arch independent trampoline code in mini-trampolines.c.
13783
13784         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13785
13786         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13787
13788         * mini-s390.h: Remove an unused define.
13789         
13790         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13791         the arch independent trampoline code in mini-trampolines.c.
13792
13793         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13794
13795 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13796
13797         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13798
13799         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13800
13801         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13802
13803         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13804
13805         * cpu-amd64.md: Use smaller sizes for int opcodes.
13806
13807         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13808
13809         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13810         objects.cs.
13811
13812         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13813         debugging.
13814
13815         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13816         instead of though a pointer to save an indirection when accessing elements of
13817         the array.
13818
13819         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13820         some typos.
13821         (NOT_IMPLEMENTED): New helper macro.
13822         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13823         of a bb.
13824
13825         * *.c: Use the new helper macro.
13826
13827 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13828
13829         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13830
13831 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13834         stack slots.
13835
13836 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13837
13838         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13839         profiling is enabled.
13840         
13841         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13842         the end.
13843         (mono_arch_emit_prolog): Add more first bblock optimizations.
13844
13845         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13846         in order if possible.
13847         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13848         bblock, since the arguments are still in their original registers.
13849
13850         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13851
13852 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13853
13854         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13855         as well.
13856
13857         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13858         offset 0.
13859
13860         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13861
13862         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13863         process async exceptions received while in unmanaged code.
13864
13865         * mini.c (mini_init): Install a callback with the runtime which will be called
13866         when a thread receives an async exception while in unmanaged code.
13867
13868         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13869
13870         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13871
13872 2008-01-16  Wade Berrier  <wberrier@novell.com>
13873
13874         * cpu-g4.md:
13875         * cpu-arm.md:
13876         * cpu-s390x.md:
13877         fix build
13878
13879 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13880
13881         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13882         compilation with sun cc.
13883
13884         * cpu-*.md: Fix the build.
13885
13886         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13887
13888         * mini-amd64.h: Add some comments to the MonoLMF structure.
13889
13890         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13891         
13892         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13893         in the LMF structure if possible. This saves two instructions in the
13894         managed->native wrappers.
13895
13896         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13897
13898 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13899
13900         * generic-sharing.c: New type argument lookup code which uses the
13901         runtime generic context template.
13902
13903 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13904
13905         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13906
13907         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13908         (mono_arch_output_basic_block): Fix localloc implementation.
13909
13910         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13911
13912         * mini-ia64.c (peephole_pass): Fix ia64 build.
13913
13914         * mini-amd64.c (peephole_pass): Fix a warning.
13915         
13916         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13917         at a constant offset from sp/fp.
13918
13919         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13920         instead of obtaining it from *lmf in the managed method case.
13921
13922 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13923
13924         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13925
13926 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13927
13928         * mini.h (MonoInstList): New type.
13929         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13930         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13931         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13932         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13933         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13934         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13935         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13936         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13937         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13938         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13939         MONO_INST_LIST_FOR_EACH_ENTRY,
13940         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13941         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13942         mono_inst_list_first, mono_inst_list_last,
13943         mono_inst_list_next, mono_inst_list_prev): New instruction
13944         list handling interfaces.
13945         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13946         list head 'ins_list'.
13947         (MonoInst): Replace next pointer with list head 'node'.
13948         (MonoCallInst): Make 'out_args' a MonoInstList.
13949         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13950         (MonoCompile): Delete reverse_inst_list and
13951         reverse_inst_list_len.
13952         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13953         mono_arch_lowering_pass, mono_arch_local_regalloc,
13954         mono_arch_output_basic_block, mono_arch_emit_prolog):
13955         Convert to new instruction lists.
13956         (insert_after_ins): Delete.
13957         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13958         instruction lists.
13959         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13960         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13961         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13962         mono_emulate_opcode, mono_emit_load_got_addr,
13963         inline_method, mono_method_to_ir, mono_print_bb_code,
13964         print_dfn, decompose_pass, nullify_basic_block,
13965         replace_out_block_in_code, remove_block_if_useless,
13966         merge_basic_blocks, move_basic_block_to_end,
13967         try_unsigned_compare, optimize_branches, mono_print_code,
13968         mini_select_instructions, remove_critical_edges): Likewise.
13969         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13970         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13971         mono_arch_output_basic_block, mono_arch_emit_prolog):
13972         Likewise.
13973         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13974         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13975         mono_arch_output_basic_block): Likewise.
13976         (inst_list_prepend, insert_after_ins): Delete.
13977         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13978         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13979         instruction lists.
13980         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13981         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13982         mono_arch_emit_prolog): Likewise.
13983         * cfold.c (mono_constant_fold): Likewise.
13984         * liveness.c (visit_bb, mono_analyze_liveness,
13985         optimize_initlocals): Likewise.
13986         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13987         * graph.c (mono_draw_code_cfg): Likewise.
13988         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13989         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13990         mono_ssa_cprop): Likewise.
13991         * abcremoval (get_relations_from_previous_bb, process_block):
13992         Likewise.
13993         * local-propagation (mono_cprop_invalidate_values,
13994         mono_local_cprop_bb): Likewise.
13995         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13996         peephole_pass, mono_arch_output_basic_block,
13997         mono_arch_emit_prolog): Likewise.
13998         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13999         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14000         mono_arch_emit_prolog): Likewise.
14001         (insert_after_ins): Delete.
14002         * aliasing.c (print_code_with_aliasing_information,
14003         mono_build_aliasing_information, mono_aliasing_deadce):
14004         Convert to new instruction lists.
14005         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14006         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14007         mono_arch_local_regalloc, mono_arch_output_basic_block):
14008         Likewise.
14009         (insert_after_ins): Delete.
14010         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14011         peephole_pass, mono_arch_output_basic_block): Convert to
14012         new instruction lists.
14013         * mini-codegen (InstList, inst_list_prepend,
14014         insert_after_ins): Delete.
14015         (insert_before_ins, get_register_force_spilling,
14016         get_register_spilling, free_up_ireg, free_up_reg,
14017         create_copy_ins, create_spilled_store, alloc_int_reg,
14018         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14019         to new instruction lists.
14020         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14021         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14022         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14023         (insert_after_ins): Delete.
14024         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14025         mono_arch_local_regalloc, mono_arch_output_basic_block,
14026         mono_arch_call_opcode): Convert to new instruction lists.
14027         (insert_after_ins): Delete.
14028         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14029         peephole_pass, mono_arch_output_basic_block,
14030         mono_arch_emit_prolog): Convert to new instruction lists.
14031
14032 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14033
14034         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14035
14036         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14037         Fixes #353182.
14038
14039         * Makefile.am (version.h): Make this work with non-bash shells.
14040
14041 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14042
14043         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14044
14045 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14046
14047         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14048         the InitializeArray optimization.
14049
14050 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14051
14052         * mini.c driver.c: Don't include os/gc_wrapper.h.
14053
14054 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14055
14056         * mini.c (print_jit_stats): Print GC statistics if available.
14057
14058 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14059
14060         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14061
14062 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14063
14064         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14065
14066 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14069         
14070         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14071
14072         * driver.c (mono_main): Ditto.
14073
14074 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14075
14076         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14077
14078         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14079         in the vtable can't be encoded.
14080         (compile_method): Ditto.
14081
14082 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14083
14084         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14085         defined.
14086
14087         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14088         lmf->rbp.
14089
14090         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14091         the top LMF entry belongs to the current method.
14092
14093         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14094
14095 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14096
14097         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14098         
14099         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14100
14101         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14102
14103         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14104
14105         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14106
14107         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14108         implementation.
14109
14110         * basic-float.cs: Add an ulong->double cast test.
14111
14112 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * mini.c (mono_method_to_ir): Fix a warning.
14115
14116 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14117
14118         * mini-ops.h: Add OP_SWITCH.
14119
14120         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14121         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14122
14123 2007-12-11  Geoff Norton  <gnorton@novell.com>
14124
14125         * mini-s390x.c: Minor change to the MAX() define to allow
14126         it to compile with other gcc versions.
14127
14128 2007-12-11  Geoff Norton  <gnorton@novell.com>
14129
14130         * cpu-s390x.md:
14131         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14132
14133 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14134
14135         exceptions-arm.c (mono_arch_get_restore_context): Restore
14136         the frame pointer.
14137
14138         exceptions-arm.c (throw_exception): Save the frame pointer.
14139         This is a partial fix for #323747. Only the client side is
14140         fixed.
14141
14142 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14143
14144         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14145         was using an unrelated variable to log the class which
14146         needed the cctor to be called. This was crashing on arm.
14147
14148 2007-12-09  Robert Jordan  <robertj@gmx.net>
14149
14150         * mini-x86.c (mono_arch_emit_epilog):
14151         Consider all kinds of 64-bit types. Fixes #323114.
14152
14153 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14154
14155         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14156
14157 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14158
14159         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14160
14161 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14162
14163         * mini.c: run type ctor before allocating an object, not only
14164         when running it's constructor method (fixes at least part of bug #342507).
14165
14166 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14167         
14168         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14169         
14170         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14171         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14172         function.
14173
14174         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14175         mono_generic_class_init_trampoline () the same as it is done with the other
14176         trampolines.
14177
14178         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14179         aot-runtime.c aot-compiler.c: Implement AOT support.    
14180
14181 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14182
14183         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14184         build for archs which don't have the vtable trampoline defined
14185         yet.
14186
14187 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14188
14189         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14190
14191         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14192
14193         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14194
14195         * tramp-<ARCH>.c: Use the new helper function.
14196
14197 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14198
14199         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14200         trampoline call, which takes a vtable argument.
14201
14202         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14203         OP_TRAMPCALL_VTABLEs like other calls.
14204
14205         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14206         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14207         call.  Implemented a support function which fetches the vtable
14208         from a register set.
14209
14210         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14211         Implemented a generic class init trampoline, using the
14212         OP_TRAMPCALL_VTABLE opcode.
14213
14214         * mini.c: Implemented static field access when sharing generic
14215         code.  This implies initing the class using the new
14216         OP_TRAMPCALL_VTABLE call.
14217
14218 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14219
14220         * mini.c: Don't compile methods with sharing enabled if their
14221         classes are disabled for sharing.
14222
14223 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14224
14225         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14226         opcodes. Fixes #346563.
14227
14228         * objects.cs: Add a new test.
14229
14230         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14231
14232         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14233         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14234
14235 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14236
14237         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14238
14239 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14240
14241         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14242         code stream.
14243
14244 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14245
14246         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14247
14248         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14249         optimization in the AOT case.
14250         
14251 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14252
14253         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14254         
14255         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14256
14257         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14258
14259         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14260
14261         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14262         is created by the inlined delegate ctor.
14263
14264         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14265
14266         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14267
14268 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14269
14270         * cpu-x86.md: Fix the length of ckfinite.
14271
14272 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14273
14274         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14275         
14276         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14277         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14278
14279         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14280
14281         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14282         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14283
14284 2007-11-28  Martin Baulig  <martin@ximian.com>
14285
14286         * mini-x86.c
14287         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14288         after creating the trampoline.
14289
14290 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14291
14292         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14293
14294         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14295         the same version.
14296
14297         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14298         instead of the calling method to help AOT.
14299
14300         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14301
14302 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14303
14304         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14305         is defined.
14306
14307 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14308
14309         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14310         
14311         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14312         (encode_method_ref): No need to handle generic method definitions specially.
14313
14314         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14315
14316         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14317         decode_klass_info.
14318
14319         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14320         encode_klass_info.
14321         (compile_method): Enable generic sharing.
14322
14323 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14324
14325         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14326         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14327
14328         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14329         generic code.
14330
14331         * mini-trampolines.c: Fix a warning.
14332
14333         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14334         NEW_PCONST.
14335         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14336         (generic_class_is_reference_type): Remove unused function.
14337
14338         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14339         in the generic vtable trampoline case.
14340
14341         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14342         
14343         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14344         return an AOT method based on a vtable slot.
14345
14346         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14347
14348         * mini.c (mini_get_vtable_trampoline): Export this.
14349
14350 2007-11-22  Martin Baulig  <martin@ximian.com>
14351
14352         * debug-debugger.h
14353         (MonoDebuggerInfo): Move `debugger_version' up.
14354
14355 2007-11-22  Martin Baulig  <martin@ximian.com>
14356
14357         * mini-amd64.c
14358         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14359
14360         * mini-trampolines.c
14361         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14362         after compiling the method.
14363
14364 2007-11-20  Martin Baulig  <martin@ximian.com>
14365
14366         * debug-mini.c
14367         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14368         (mono_debugger_remove_breakpoint): Likewise.
14369         (mono_debugger_check_breakpoints): Likewise.
14370
14371         * debug-debugger.c: Implement the new breakpoint interface here.
14372
14373 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14374
14375         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14376         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14377
14378         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14379
14380 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14381
14382         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14383
14384         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14385         mini.c.
14386
14387         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14388         mini.c.
14389
14390         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14391         returning a vtype in a register.
14392
14393         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14394         here from the arch specific code.
14395
14396         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14397         mini.c.
14398
14399         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14400         (mono_arch_emit_prolog): Increment maximum prolog size.
14401
14402         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14403         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14404
14405         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14406         MonoGenericSharingContext.
14407
14408         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14409         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14410
14411 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14412
14413         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14414         which extract fields out of the runtime generic context.  Full
14415         sharing of the NEWARR opcode.
14416
14417 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14418
14419         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14420         --enable-minimal=ssa.
14421
14422 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14423
14424         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14425         mono_marshal_get_delegate_invoke () signature change.
14426
14427 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14428
14429         * mini.c: Removed the shared context in favor of the generic
14430         sharing context.  Allocate the MonoJitInfo structure with room for
14431         the generic sharing context if it's needed.
14432
14433         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14434         domain-internals.h now.
14435
14436         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14437
14438         * generic-sharing.c: Several changes for working without a shared
14439         context and instead operating on open types instead.
14440
14441 2007-11-12  David S. Miller  <davem@davemloft.net>
14442
14443        * inssel-sparc.brg: Fix double instruction emit.
14444
14445 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14446
14447         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14448         Get/Set/Address methods.
14449         
14450         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14451         mono_marshal_get_delegate_invoke signature change.
14452
14453 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14454
14455         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14456         This can happens with dynamic methods. Fixes the other bug in #322722.
14457
14458 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14459
14460         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14461         BX call sequence.
14462
14463         * mini-arm.c (arm_patch): Implement patching of BX call
14464         sequence. Fixes one of the bugs in #322722.
14465
14466 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14467
14468        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14469        under Linux.  We only need to flush every 32-byte cache line.    
14470
14471 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14472
14473         * mini.c:
14474         move_basic_block_to_end: Add branches when needed, eventually creating
14475         a new BB.
14476         optimize_branches: added a parameter that tells if it's ok to create
14477         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14478         and avoid calling move_basic_block_to_end when it's not ok.
14479         Fixes bug 318677.
14480
14481 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14482
14483         * mini.c: Abort inlining call to InitializeArray if something
14484         looks wrong.  Let the icall handle it, which now has proper safety
14485         checks.
14486
14487 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14488
14489         * mini.c (mono_spill_call): add support for soft-float.
14490
14491         * mini.c (mono_method_to_ir): add support for soft-float
14492         to inlined functions that return float.
14493
14494         * mini.c (mono_method_to_ir): add support for soft-float
14495         to cee_stsfld opcode on float fields.
14496
14497 2007-11-05  Geoff Norton  <gnorton@novell.com>
14498
14499         * mini-x86.h: Fix the structure access for X86 Leopard.
14500
14501
14502 2007-11-05  Martin Baulig  <martin@ximian.com>
14503
14504         * mini-trampolines.c
14505         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14506         after compiling the method to notify the debugger.
14507
14508 2007-11-05  Martin Baulig  <martin@ximian.com>
14509
14510         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14511
14512 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14513
14514         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14515         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14516
14517 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14518
14519         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14520         native-to-managed wrappers.
14521         
14522 2007-11-01  Geoff Norton  <gnorton@novell.com>
14523
14524         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14525         members.
14526
14527 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14528
14529         * mini.c, mini-x86.c: when getting back from unmanaged code
14530         to managed via a marshaled delegate we also need to set the
14531         right domain.
14532
14533 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14534
14535         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14536         for amd64.
14537
14538 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14539
14540         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14541         let the debugger or other external agents to tell the JIT when
14542         a sw breakpoint has been inserted in the code that the JIT needs
14543         to be able to inspect.
14544
14545 2007-10-31  Martin Baulig  <martin@ximian.com>
14546
14547         * debug-debugger.h
14548         (MonoDebuggerInfo): Remove `runtime_class_init'.
14549
14550 2007-10-30  Martin Baulig  <martin@ximian.com>
14551
14552         * debug-mini.h
14553         (mono_debugger_thread_created): Added `MonoThread *' argument.
14554         (mono_debugger_extended_notification): New public method.
14555         (mono_debugger_trampoline_compiled): New public method.
14556
14557         * debug-mini.c
14558         (MonoDebuggerThreadInfo): Added `thread' and
14559         `extended_notifications' fields.
14560
14561         * debug-debugger.c
14562         (debugger_executable_code_buffer): New static variable.
14563
14564         * debug-debugger.h
14565         (MonoDebuggerInfo): Added `executable_code_buffer',
14566         `executable_code_buffer_size', `breakpoint_info_area',
14567         `breakpoint_table' and `breakpoint_table_size'.
14568
14569 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14570
14571         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14572         that IP  either is an unused value or the vtable pointer. IMT 
14573         calls use vtable + offset now. Reduced by almost half the size
14574         of IMT entries.
14575
14576 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14577
14578         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14579         defines to access param registers. Replace long usage with
14580         gsize as sizeof(long) != sizeof(void*) on Win64.
14581
14582         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14583         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14584         instead of non-existant _GetAddressOfReturnAddress.
14585
14586         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14587         param registers. Save/restore %rdi and %rsi in MonoLMF.
14588
14589         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14590         param registers. Modify (throw_exception) signature to take 
14591         %rdi and %rsi on Win64. 
14592
14593         Code is contributed under MIT/X11 license.
14594
14595 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14596
14597         * helpers.c: unlink debugging output files.
14598
14599 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * mini.c: Move mono_create_ftnptr () to object.c.
14602
14603 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14604
14605         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14606         optional. This function can now be used to disassemble code generated
14607         outside the JIT such as trampolines and IMT thunks.
14608
14609         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14610
14611         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14612         vtable pointer from a ldr instruction.
14613
14614         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14615         new IMT call sequence.
14616
14617         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14618         call sequence for interface invocations.
14619
14620         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14621         for imt support. This function is empty since IMT on ARM requires no
14622         special handling on the IR side.
14623
14624         * mini-arm.c (mono_arch_find_imt_method): added, required for
14625         imt support.
14626
14627         * mini-arm.c (mono_arch_find_this_argument): added, required
14628         for imt support.
14629
14630         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14631         a ldr instruction to load a value stored in the code stream.
14632
14633         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14634         for imt support.
14635
14636
14637 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14638
14639         * mini.c (mini_init): Install the jump trampoline callback.
14640
14641 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14642
14643         * mini-trampolines.c: handle synchronized methods with the common
14644         vtable trampoline (bug #335601).
14645
14646 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14647
14648         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14649
14650         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14651         64 bit platforms.
14652
14653         * mini-ia64.h mini-ia64.c: Add support for IMT.
14654
14655         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14656         prolog. Fixes #331958.
14657
14658 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14659
14660         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14661
14662 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14663
14664         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14665         trampoline.
14666
14667 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14668
14669         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14670         trampoline.
14671
14672 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14673
14674         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14675         trampoline.
14676
14677 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14678
14679         * mini-trampolines.c: changed the magic rampoline to understand
14680         the common vtable trampoline method: the method to invoke is
14681         determined by the vtable displacement of the call.
14682
14683 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * mini.c, mini.h: register the common vtable trampoline if the
14686         architecture supports it.
14687
14688 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14689
14690         * cpu-amd64.md: use the correct max length for tls_get.
14691
14692 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14693
14694         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14695         CEE_STELEM_ANY. Fixes #333696.
14696
14697 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14698
14699         * exceptions-x86.c: provide more graceful handling of the case where
14700         we followed a bogus function pointer from managed code (bug #332866).
14701
14702 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14703
14704         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14705         replaces the generic_shared flag and will carry more information
14706         in the future.
14707
14708         * generic-sharing.c: Added mini_type_stack_size() which allows
14709         allows open types if given a generic sharing context.
14710         mini_get_basic_type_from_generic() takes a
14711         MonoGenericSharingContext* instead of a MonoCompile* now.
14712
14713         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14714         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14715         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14716         changes above.  Just passing arguments through to the right
14717         places.
14718
14719 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14720
14721         * mini-arm.c: unify the call emission to emit_code_seq().
14722
14723 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14724
14725         * tramp-arm.c: reduced the trampoline size.
14726
14727 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14728
14729         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14730         variable handling out of arch-specific code.
14731
14732 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14733
14734         * mini-arm.c: implemented fast delegate dispatch.
14735
14736 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14737
14738         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14739         that fp elimination is turned off if the space required by locals is too
14740         big. Fixes #331958.
14741
14742 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14743
14744         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14745         ARM to the new style trampoline.
14746
14747 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14748
14749         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14750
14751         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14752
14753 2007-10-09  Martin Baulig  <martin@ximian.com>
14754
14755         * debug-debugger.h
14756         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14757         `field_info_offset_offset'.     
14758
14759 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14760
14761         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14762         removed more internal usage of the r11 register and made it available
14763         to the register allocator.
14764
14765 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14766
14767         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14768         when sharing generics and treat type variables as references.
14769
14770 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14771
14772         * mini-ppc.c: started removing the internal uses of register r11
14773         to eventually allow the register allocator to manage it as an
14774         additional available register.
14775
14776 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14777
14778         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14779
14780 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14781
14782         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14783         specific trampolines as they are not performance critical as a jump
14784         target (maybe align as before only for AOT code?). This saves about
14785         200 KB of native code on x86 for monodevelop startup.
14786
14787 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14788
14789         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14790         monodevelop startup.
14791
14792 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14793
14794         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14795
14796         * mini-sparc.h mini-sparc.c: Implement IMT support.
14797
14798         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14799         its smaller and doesn't clobber sparc_g1.
14800
14801         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14802
14803 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14804
14805         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14806
14807 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14808
14809         * mini-ppc.c: implemented fast delegate invocation.
14810
14811 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14812
14813         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14814
14815 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14816
14817         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14818         code to the new style trampoline in preparation for IMT support.
14819
14820 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14821
14822         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14823         systems already. This also reduces the specific trampiline sizes and
14824         prepares for the use of r12 as the IMT identifier register.
14825
14826 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14827
14828         * mini-mips.h: endianess fix (simplified from a patch by
14829         Thomas Kunze <thommy@tabao.de>, bug #323737).
14830
14831 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14832
14833         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14834         to access ucontext fields and enable netbsd support
14835         (partially from Magnus Henoch <mange@freemail.hu>).
14836
14837 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14838
14839         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14840         use the preprocessor from the CPP env var if it is set.
14841
14842 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14843
14844         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14845         code, before interface_offset gets used.
14846
14847 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14848
14849         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14850         mono_class_setup_vtable () before accessing klass->vtable.
14851
14852 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14853
14854         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14855         hackish.
14856
14857 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14858
14859         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14860         IMT slots (this saves hundreds of KB of memory in programs like
14861         IronPython and Monodevelop).
14862
14863 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14864
14865         * mini.c: print the delegate counter.
14866
14867 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14868
14869         * mini-x86.c: make it easier to enable the debugging code for IMT
14870         slots.
14871
14872 2007-09-28  Martin Baulig  <martin@ximian.com>
14873
14874         * debug-debugger.h
14875         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14876         `mono_method_klass_offset' and `mono_method_token_offset'.
14877
14878 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14879
14880         * mini.c: First generics sharing implementation.  Can only share
14881         in very simple cases.  If sharing doesn't work it falls back to
14882         dedicated compilation.
14883
14884         * mini.h: Flag in MonoCompile to specify whether generic
14885         compilation is shared.  Flags enum for marking which generic inst
14886         of a context is used.  Prototypes for helper functions.
14887
14888         * generic-sharing.c: Helper functions for generic method sharing.
14889
14890         * optflags-def.h: Optimization flag (gshared) for enabling generic
14891         method sharing added.
14892
14893         * Makefile.am: generic-sharing.c added.
14894
14895 2007-09-19 Daniel Nauck <dna@mono-project.de>
14896
14897         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14898
14899 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14900         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14901         fixes bug 325507.
14902
14903 2007-09-19  Martin Baulig  <martin@ximian.com>
14904
14905         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14906         mono_debug_cleanup() is now part of mono_cleanup().
14907
14908 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * driver.c (mono_main): Fix a warning.
14911
14912 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14913
14914         * aot-compiler.c: Optimize various parts when processing large assemblies.
14915         Fixes ##325568.
14916
14917         * mini.c (mono_patch_info_hash): Improve hash function.
14918
14919 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14920
14921         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14922         
14923         Code is contributed under MIT/X11 license.
14924
14925 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14926
14927         * mini.c (mini_init): Fix a leak.
14928
14929         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14930
14931 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14932
14933         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14934
14935 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14936
14937         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14938
14939 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14942         variance tests.
14943
14944         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14945
14946         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14947
14948         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14949
14950         * aot-runtime.c (decode_patch_info): Ditto.
14951
14952 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14953
14954         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14955         static case. Cache delegates in architecture specific code, 
14956         based on number of parameters.
14957         
14958         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14959         in architecture specific code, based on number of parameters.
14960         
14961         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14962         caching happen in architecture specific code now.
14963         
14964         Code is contributed under MIT/X11 license.
14965
14966 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14967
14968         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14969         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14970         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14971
14972         Code is contributed under MIT/X11 license.
14973
14974 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14975         * mini.c: (mono_thread_abort) Fixed bug #82416.
14976
14977 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14978
14979         * mini.: hook the new managed GC allocation feature into the JIT.
14980
14981 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14982
14983         * mini.c: implementation for the new runtime tls opcode.
14984
14985 2007-09-11  Martin Baulig  <martin@ximian.com>
14986
14987         * debug-debugger.h
14988         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14989         `mono_method_inflated_offset'.
14990
14991 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14992
14993         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14994         async exceptions into a method.
14995
14996         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14997         purpose of testing whenever the unwinder works at every instruction.
14998
14999 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15000
15001         * mini.c: check accessibility of method used in ldftn (fixes
15002         bug #82635).
15003
15004 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15005
15006         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15007
15008         * inssel.brg: Fix a warning.
15009
15010 2007-09-03  Martin Baulig  <martin@ximian.com>
15011
15012         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15013         now takes the `main_method' as argument.
15014
15015 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15016
15017         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15018
15019 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15020
15021         * driver.c: include the cil-coff.h header on Windows.
15022         
15023         Code is contributed under MIT/X11 license.
15024
15025 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15026
15027         * mini.c, driver.c: don't include the cil-coff.h header.
15028
15029 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15030
15031         * mini.c: flag places that needs fixes fo soft-float support.
15032
15033 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15034
15035         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15036         endian systems (partially from Dean Jenkins, bug #81924).
15037
15038 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15039
15040         * mini.c (check_linkdemand): Remove embedded reference object in
15041         call to LinkDemandSecurityException.
15042         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15043         with an IntPtr instead of a reference object.
15044
15045 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15046
15047         * mini.c (handle_initobj): Handle alignment properly.
15048
15049         * inssel.brg (mini_emit_memset): Ditto. 
15050
15051         * inssel.brg (mini_emit_memcpy): Ditto. 
15052
15053         * inssel-sparc.brg: Ditto.              
15054
15055         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15056
15057 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15058
15059         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15060         exceptions raised in unmanaged code. Fixes part of #82594.
15061
15062 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15063
15064         * mini.c (mono_method_to_ir), declsec.c
15065         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15066
15067 2007-08-22  Martin Baulig  <martin@ximian.com>
15068
15069         * debug-mini.h
15070         (MonoDebuggerThreadInfo): New typedef.
15071         (mono_debugger_thread_table): New global variable.
15072         (mono_debugger_thread_created): New public function.
15073         (mono_debugger_thread_cleanup): New public function.
15074
15075         * debug-debugger.h
15076         (MonoDebuggerInfo):
15077         - removed `get_current_thread' and `lookup_assembly'.
15078         - removed `data_table'.
15079         - added `thread_table'.
15080
15081         * mini.c
15082         (mono_thread_start_cb): Call mono_debugger_thread_created().
15083         (mono_thread_attach_cb): Likewise.
15084         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15085         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15086         initial domain.
15087
15088         * driver.c (mono_main): Move mono_debug_init() up, before calling
15089         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15090
15091 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15092
15093         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15094         together when passing several arguments of type double (gives a small
15095         speedup and saves a few bytes of generated code).
15096
15097 2007-08-20  Jb Evain  <jbevain@novell.com>
15098
15099         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15100
15101 2007-08-20  Jb Evain  <jbevain@novell.com>
15102
15103         * mini.c (mono_method_to_ir): throw MethodAccessException
15104         and FieldAccessException instead of InvalidProgramException.
15105
15106 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15107
15108         * mini.c: CoreCLR security checks.
15109
15110         * mini.h: Removed MonoSecurityMode (moved to
15111         metadata/security-manager.h) and mono_security_mode global var
15112         (replaced by set/get functions in security-manager.h).
15113
15114         * driver.c: Added "core-clr-test" security mode for testing.  Used
15115         set-function for setting security mode.
15116
15117 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15118
15119         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15120         the new jit_info_table.
15121
15122         * driver.c: Test code for the new jit_info_table (enabled by the
15123         define MONO_JIT_INFO_TABLE_TEST).
15124
15125 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15126
15127         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15128         detection of call <REG> instruction sequence. Fixes build on freebsd.
15129
15130 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15131
15132         * mini-exceptions.c: Fix a warning.
15133
15134 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15135
15136         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15137         stack overflow handling code on amd64 too.
15138
15139         * mini-exceptions.c (mono_setup_altstack): Make this use 
15140         mono_thread_get_stack_bounds ().
15141
15142         * mini-x86.h: Disable sigaltstack on solaris x86.
15143
15144 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15145
15146         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15147
15148 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15149
15150         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15151
15152 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15153
15154         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15155
15156         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15157
15158 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15159
15160         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15161         due to alignment.
15162
15163 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15164
15165         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15166         to be emitted (bug #82281).
15167
15168 2007-08-01  Martin Baulig  <martin@ximian.com>
15169
15170         Merged the `debugger-dublin' branch.
15171
15172         * debug-debugger.h (MonoDebuggerInfo):
15173         Removed the `old_*' compatibility entries.
15174         Added `debugger_version' and `data_table'.
15175         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15176         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15177
15178         * debug-mini.c
15179         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15180         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15181         instead of a `gconstpointer'.
15182         (mono_debugger_insert_method_breakpoint): Return a
15183         `MonoDebugMethodAddressList *'.
15184
15185 2007-06-28  Martin Baulig  <martin@ximian.com>
15186
15187         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15188
15189 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15190
15191         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15192         __builtin_frame_address () since it is broken on older gcc versions.
15193
15194 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15195
15196         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15197         on the stack overflow handling and made the managed stack overflows
15198         catchable in most cases using soft guard pages.
15199         * exceptions-x86.c: added code to restore the protection in the soft
15200         guard pages at the end of exception handling.
15201
15202 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15203
15204         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15205
15206 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15207
15208         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15209         exception handling.
15210
15211 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15212
15213         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15214         signal handling support until it has been ported to the new mechanism.
15215         * mini.c: fixed stack overflow detection and use the new
15216         architecture code  to handle signals on the altstack.
15217
15218 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15219
15220         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15221         stack overflows on the alt stack.
15222
15223 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15224
15225         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15226         stack overflows on the alt stack.
15227
15228 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15229
15230         * exceptions-ppc.c: cleanup preparing for altstack support.
15231
15232 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15233
15234         * exceptions-arm.c: cleanup preparing for altstack support.
15235
15236 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15237
15238         * mini.c (print_jit_stats): Output hazard pointer stats.
15239
15240 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15241
15242         * driver.c, mini.c: Replaced security mode flags with a single
15243         enum variable.
15244
15245 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15246
15247         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15248
15249 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15250
15251         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15252         (which doesn't do anything yet) for activating Core CLR
15253         (Silverlight) security.
15254
15255 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15256
15257         * mini-codegen.c: work around a possible gcc bug on arm.
15258
15259 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15260
15261         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15262         message for platforms that don't support AOT compilation.
15263
15264 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15265
15266         * mini.h, mini.c, driver.c: temporary smcs hack.
15267
15268 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15269
15270         * mini-arm.h, mini-arm.c: arm EABI fixes.
15271
15272 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15273
15274         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15275         case.
15276
15277         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15278         trampolines taking a method argument.
15279
15280         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15281
15282         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15283         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15284
15285         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15286         JIT compilation throws an exception. Fixes #82050.
15287
15288 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15289
15290         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15291         with the MONO_EXCEPTION_ defines.
15292
15293 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15294
15295         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15296         #82117.
15297         
15298         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15299         the cause of an assertion.
15300
15301 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15302
15303         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15304         removed.
15305
15306 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15307
15308         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15309         assert. Should fix #82103.
15310
15311 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15312
15313         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15314         here too. Fixes #82095.
15315
15316         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15317         addresses.
15318
15319         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15320
15321         * mini-amd64.h: Enable IMT for amd64.
15322         
15323         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15324
15325 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15326
15327         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15328
15329 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15330
15331         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15332         as soon as check_linkdemand sets an exception_type.
15333
15334 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15335
15336         * mini-x86.c: fixed offsets for IMT call sequence.
15337         * mini-x86.h: enable IMT again.
15338
15339 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15340
15341         * trace.c (mono_trace_enter_method): Decode MonoType too.
15342
15343         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15344
15345         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15346
15347         * mini-amd64.c: Add preliminary IMT implementation.
15348         
15349 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15350
15351         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15352         understand the new IMT-base interface invocation (thanks to
15353         Daniel Nauck for the report and the remote debugging session).
15354
15355 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15356
15357         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15358
15359 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15360
15361         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15362
15363 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15364
15365         * mini-trampolines.c: implement AOT IMT support.
15366         * mini-x86.h: enable IMT support for wider testing.
15367
15368 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15369
15370         * inssel.brg (emit_imt_argument): Add aot support here.
15371
15372         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15373
15374 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15375
15376         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15377         of the IMT implementation, partially from massi, with my
15378         implementation of the bsearch sequence. Disabled by default until
15379         the AOT code is implemented.
15380
15381 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15382
15383         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15384
15385         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15386
15387 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15388
15389         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15390         arch-independent IMT JIT code from Massimiliano
15391         Mantione (massi@ximian.com) with small cleanups from me.
15392
15393 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15394
15395         * Makefile.am: fix svn invocation to get the svn revision to be
15396         independent of the local language (build fix).
15397
15398 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15399
15400         * mini.c (inline_method): Reset cfg->exception_type if the
15401         inlining is aborted.  Fixes: 82049.
15402
15403 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15404
15405         * mini.c: remove assert from exception handling code when exception_ptr
15406         is not set.
15407
15408 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15409
15410         * mini.c (mono_codegen): Add an assert.
15411
15412         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15413         enter and leave code.
15414         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15415
15416 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15417
15418         * mini-ppc.c: fixed memory corruption for localloc(0)
15419         (bug #81852).
15420
15421 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15422         
15423         * mini.c: Fix warnings.
15424
15425 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15426
15427         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15428         to emit better double->int conversions.
15429
15430 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15431
15432         * mini.c: the provided Min/Max optimizations are valid for unisgned
15433         ints.
15434
15435 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15436
15437         * 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
15438
15439 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15440
15441         * mini.c (mono_running_on_valgrind): Add support for reporting the
15442         method and  its boundaries to valgrind.
15443
15444 2007-06-28  Martin Baulig  <martin@ximian.com>
15445
15446         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15447
15448 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15449
15450         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15451
15452         * generic.2.cs: Add new test case.
15453
15454 2007-06-25  Martin Baulig  <martin@ximian.com>
15455
15456         Merged the `debugger-dublin' branch.
15457
15458         * debug-mini.c
15459         (mono_debugger_insert_method_breakpoint): New public method.
15460         (mono_debugger_remove_method_breakpoint): Likewise.
15461         (mono_debugger_check_breakpoints): New static method.
15462         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15463
15464         * debug-debugger.h (MonoDebuggerInfo):
15465         Renamed (to keep backward compatibility in the vtable):
15466         `insert_breakpoint' -> `old_insert_breakpoint'.
15467         `remove_breakpoint' -> `old_remove_breakpoint'.
15468         `create_string' -> `old_create_string'.
15469         `lookup_class' -> `old_lookup_class'.
15470         `lookup_type' -> removed; changed into a dummy field.
15471         `lookup_assembly' -> `old_lookup_assembly'.
15472         Added (same functionality, but different signature):
15473         `create_string', `lookup_class', `lookup_assembly'
15474         Added new:
15475         `get_method_addr_or_bpt', `remove_method_breakpoint',
15476         `runtime_class_init'.
15477
15478         * debug-debugger.c: Merged the `debugger-dublin' branch.
15479
15480 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15481
15482         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15483         well.
15484         (peephole_pass): Likewise.
15485
15486 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15487
15488         * driver.c: hopefully make setaffinity work also for ancient
15489         versions of linux.
15490
15491 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15492
15493         * driver.c : win32 build fix.
15494
15495 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15496
15497         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15498         processor if it is set.
15499
15500 2007-06-21  Martin Baulig  <martin@ximian.com>
15501
15502         * debug-mini.h: New file.
15503
15504         * debug-mini.c
15505         (mono_debugger_insert_breakpoint_full): Moved here from
15506         ../metadata/mono-debug-debugger.c.
15507         (mono_debugger_remove_breakpoint): Likewise.
15508         (mono_debugger_breakpoint_callback): Likewise.
15509
15510 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15511
15512         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15513         changes in MonoGenericClass.
15514
15515 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15516
15517         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15518
15519 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15520
15521         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15522         removal of MonoGenericMethod.
15523
15524 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15525
15526         * mini-exceptions.c: hooks for the exception events profiling API.
15527
15528 2007-06-14  Randolph Chung  <tausq@debian.org>
15529
15530         * Makefile.ma: Add hppa target.
15531         * mini-arch.h: Include mini-hppa.h
15532         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15533         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15534         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15535
15536 2007-06-14  Randolph Chung  <tausq@debian.org>
15537
15538         * inssel.brg: Add rules for "chained" compare-branch operations so that
15539         a single compare op can affect multiple branches.  Adjust cost for
15540         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15541         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15542         cost for some rules so that they can more easily be overridden by
15543         per-arch rules (with fixes from lupus).
15544         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15545
15546 2007-06-13  Randolph Chung  <tausq@debian.org>
15547
15548         * mini-ops.h: Reorder branch ops so that they match the order of the
15549         corresponding CEE_* ops.  The code expects them this way.
15550         Add new ops for HPPA target.
15551         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15552
15553 2007-06-13  Randolph Chung  <tausq@debian.org>
15554
15555         * mini-exceptions.c: Handle cases where the stack grows towards
15556         larger addresses.
15557         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15558
15559 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15560
15561         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15562         counter.
15563         * driver.c: explain where a non-matching corlib is found.
15564
15565 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15566
15567         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15568
15569 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15570
15571         * mini-exceptions.c: Generate a method profile leave event during
15572         an exception to ensure that the profiler gets notified.
15573
15574 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15575
15576         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15577         branch.
15578
15579         * cpu-amd64.md: Add long_and/or/xor opcodes.
15580
15581 2007-06-06  Wade Berrier  <wberrier@novell.com>
15582
15583         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15584         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15585         length of instruction shr_imm (expected 8, got 10)
15586
15587 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15590
15591 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15592
15593         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15594         MonoInternalHashTable again (fixed bug in the internal hash table
15595         code).
15596
15597 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15598
15599         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15600         Have to figure out what makes it crash the SWF regression.
15601
15602 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15603
15604         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15605
15606 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15607
15608         * mini.c: optimize out the type check when storing null in a
15609         reference array.
15610
15611 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15612
15613         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15614         MonoInternalHashTable.
15615
15616 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15617
15618         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15619         signed integer methods.
15620
15621 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15622
15623         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15624         permanently since the current approach doesn't work.
15625
15626 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15627
15628         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15629         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15630
15631 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15632
15633         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15634         the sreg2==rdx case.
15635         
15636         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15637         account if it contains a rex prefix.
15638         (peephole_pass): Handle OP_FMOVE as well.
15639
15640 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15641
15642         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15643         as it causes regressions.
15644
15645 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15646
15647         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15648         static case as well.
15649
15650         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15651
15652         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15653         (mono_arch_get_this_arg_from_call): Ditto.
15654
15655         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15656
15657         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15658         invoke_impl field.
15659
15660         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15661         (mono_arch_get_this_arg_from_call): Ditto.
15662
15663         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15664         
15665         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15666         try to create optimized invoke code and use that for further invocations. 
15667         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15668
15669         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15670
15671 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15672
15673         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15674         sealed classes or methods.
15675         *devirtualization.cs: tests for the new optimization
15676
15677 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15678
15679         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15680         by the update_volatile () function.
15681
15682 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15683
15684         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15685         require it.
15686
15687         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15688
15689 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15690
15691         * mini.c: Add configure checks for header files.
15692         * mini-x86.c: Add configure checks for header files.
15693         * trace.c: Add configure checks for header files.
15694         * aot-runtime.c: Add configure checks for header files.
15695         * aot-compiler.c: Add configure checks for header files.
15696         * driver.c: Add configure checks for header files.
15697         * mini-codegen.c: Add configure checks for header files.
15698         
15699         Code is contributed under MIT/X11 license.
15700
15701 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15704         icompare_imm -128 + op_iclt. Fixes #81703.
15705
15706 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15707
15708         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15709
15710 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15711
15712         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15713         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15714         so that all isinst checks now use "interface_bitmap".
15715
15716 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15717
15718         * cpu-amd64.md (jmp): Fix a warning.
15719
15720         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15721
15722         * basic.cs: Add new regression test.
15723
15724         * basic.cs: Remove test which is now in basic-long.cs.
15725
15726         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15727
15728         * basic-long.cs: Add new test.
15729         
15730 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15731
15732         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15733
15734 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15735
15736         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15737
15738         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15739         places.
15740         
15741         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15742         throwing code a bit.
15743
15744         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15745         the exception throwing code a bit.
15746
15747         * mini-x86.c (get_call_info): Allocate result from a mempool.
15748
15749 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15750
15751         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15752
15753         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15754
15755         * mini.h (MonoCompile): Add 'token_info_hash' field.
15756
15757         * mini.c: Save token->method associations during compilation so the AOT 
15758         compiler can use it.
15759         
15760         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15761         which reference generic classes and methods.
15762
15763 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15764
15765         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15766
15767         * aot-compiler.c (compile_method): Fix a typo in a comment.
15768
15769         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15770
15771         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15772         everything generic.
15773
15774         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15775
15776 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15777
15778         * mini.h (MonoCompile): Add 'args' field.
15779
15780         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15781         into cfg->args.
15782
15783         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15784
15785 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15786
15787         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15788
15789         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15790
15791         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15792         opcodes for some opcodes.
15793
15794         * mini.h *.brg *.c: Use the new opcodes.
15795
15796 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15797
15798         * mini.h: Bumped aot revision.
15799
15800         * inssel.brg: modified code generation of type checks for interfaces
15801         to use the new "MonoClass.interface_bitmap" instead of the old
15802         "MonoClass.interface_offsets".
15803
15804 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15805
15806         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15807
15808 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15811         64 bit platforms.
15812
15813 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15814
15815         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15816
15817 2007-04-27  Wade Berrier  <wberrier@novell.com>
15818
15819         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15820         mini.h) to fix build.
15821
15822 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15823
15824         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15825         
15826         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15827         causes the corlib unit tests to fail.
15828
15829 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15830
15831         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15832
15833         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15834
15835         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15836         opcodes to the comparison relations.
15837
15838         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15839         opcodes to their types.
15840         
15841         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15842
15843         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15844         it in cfg->arch.cinfo.
15845
15846         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15847
15848         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15849         cfg->cil_offset_to_bb.
15850
15851 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15852
15853         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15854         created becase of initlocals.
15855
15856 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15857
15858         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15859         Sergey Tikhonov <tsv@solvo.ru>.
15860
15861 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15862
15863         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15864
15865 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15866
15867         * cpu-s390.md (break): Correct the length of break instruction.
15868
15869 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15870
15871         * mini.c: fix a couple of soft-float issues and comments.
15872
15873 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15874
15875         * trace.c (is_filenamechar): - is also a filename char.
15876
15877 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15878
15879         * mini-s390.c: Correct checking for enum type in return value processing.
15880
15881 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15882
15883         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15884         (version.h): Makefile is in the build directory.
15885
15886 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15887
15888         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15889
15890 2007-04-11  Martin Baulig  <martin@ximian.com>
15891
15892         * mini.c (can_access_member): Fix handling of generic classes;
15893         fixes #81259.
15894
15895 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15896
15897         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15898
15899 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15900
15901         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15902
15903 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15904
15905         * mini-codegen.c: make sure the right spill amount is
15906         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15907
15908 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15909
15910         * mini-ppc.c: fixes for the fp_branch_nan test.
15911
15912 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15913
15914         * basic.cs: Comment out new test which still fails on ia64.
15915
15916 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15917
15918         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15919
15920 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15921
15922         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15923
15924 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15925
15926         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15927         on 64 bit machines. Fixes part of #80738.
15928
15929         * basic.cs: Add regression test.
15930
15931 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15932
15933         * inssel.brg basic.cs: Revert previous change to fix build.
15934
15935         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15936         platforms.
15937         
15938         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15939
15940         * basic.cs: Add new regression test.
15941
15942 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15943
15944         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15945         many arguments.
15946
15947 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15948
15949         * cpu-s390x.md: Correct length of break instruction.
15950
15951 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15952
15953         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15954         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15955
15956 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15957
15958         * *.c: Begin WIN64 port.
15959         * mini.c:  Use correct register in profiler.
15960         * mini-amd64.c: No inline assembly on Win64.
15961         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15962         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15963         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15964         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15965         mono_arch_ip_from_context for Win64.
15966         
15967         Contributed under MIT/X11 license.
15968
15969 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15970
15971         * exceptions-amd64.c (seh_handler): Ditto.
15972
15973         * exceptions-x86.c (seh_handler): Fix a memory leak.
15974
15975 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15976
15977         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15978         mini-s390x.c: fixed peephole optimizations to deal
15979         correctly with 1 and 2 byte reload avoidance.
15980
15981 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15982
15983         * cpu-s390.md, cpu-s390x.md: update localloc length.
15984
15985 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15986
15987         * cpu-g4.md: added missing descriptions.
15988
15989 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15990
15991         *  Makefile.am: Add support so the tail tests are not executed on
15992         PowerPC as that is a known limitation of the PowerPC port.
15993
15994 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15995
15996         * runmdesc.bat:  Move to msvc directory.
15997         
15998 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15999
16000         * runmdesc.bat:  Run executable that was produced by the current
16001         target and sent via an argument.
16002         
16003 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16004
16005         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16006         #81102.
16007
16008         * generics.2.cs: Add regression test.
16009
16010 2007-03-09  Wade berrier  <wberrier@novell.com>
16011
16012         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16013
16014 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16015
16016         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16017         AOT code depends on this.
16018
16019 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16020
16021         * mini.c: more precise tracking of types in the eval stack
16022         (part of fix for bug #81044).
16023
16024 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16025
16026         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16027
16028         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16029
16030 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16031
16032         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16033
16034         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16035
16036 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16037
16038         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16039         a pointer on 64 bit systems. Fixes #80190.
16040
16041         * iltests.il: Add new regression test.
16042
16043 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16044
16045         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16046
16047 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16048
16049         * trace.c: Remove an erroneous alignemnt check when tracing.
16050           Fixes --trace on OSX86.
16051
16052 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16053
16054         * mini-$(arch).h: initialize SP in context for all the archs.
16055
16056 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16057
16058         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16059         regressions in the thread tests.
16060
16061 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16062
16063         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16064         - fixed implementation of LOCALLOC opcode
16065         - implemented non-un compare for floats
16066         - code cleanup
16067         - implementation of FDIV and CKFINITE opcodes
16068         - fixes for latest mono updates
16069         - additional arch opcodes
16070
16071 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16072
16073         * Makefile.am: simplify and merge rules for cross-compilation.
16074
16075 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16076
16077         * local-propagation.c: Actually *apply* the fix for bug 80591...
16078
16079 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16080
16081         * mini-exceptions.c: backuot part of the last change
16082         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16083
16084 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16085         * inssel.brg: Fix bug 59286.
16086
16087
16088 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16089
16090         * mini-exceptions.c: patch from Zoltan to correctly check for
16091         stack boundaries (using the stack register, not the frame register),
16092         fixes bugs #80724, #79717.
16093
16094 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16095
16096         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16097         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16098
16099         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16100         presence of frame pointer elimination.
16101
16102 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16103         
16104         * mini-x86.h: NetBSD UCONTEX_REG defines.
16105
16106 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16107
16108         * inssel-amd64.brg: Fix amd64 build.
16109
16110 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16111
16112         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16113         on amd64.
16114
16115 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16116
16117         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16118         ends.
16119
16120         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16121
16122 2007-01-30 Mark Mason <mason@broadcom.com>
16123
16124            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16125            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16126            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16127            beginning support for CEE_JMP [not quite working yet]
16128            * tramp-mips.c: LMF handling now works
16129         
16130 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16131
16132         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16133
16134         * mini.h (NULLIFY_INS): New macro.
16135
16136 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16137
16138         * mini.c: statistical profiler fix for windows, patch
16139         from Tor Lillqvist (tml@novell.com).
16140
16141 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16142         * local-propagation.c: Fix bug 80591.
16143
16144 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16145
16146         * Makefile.am: put back the --export-dynamic option as with
16147         the previous gmodule flags (thanks to Robert Jordan).
16148
16149 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16150
16151         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16152
16153         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16154         simplify and speed up the local register allocator. Also rename some fields
16155         like iassign->vassign.
16156         
16157         * regalloc.c: Remove some functions which are no longer used since their
16158         inlined version is in mini-codegen.c.
16159         
16160         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16161
16162         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16163
16164 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16167         narrowing. Fixes #80622.
16168
16169         * iltests.il: Add new regresssion test. 
16170
16171 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16172
16173         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16174         debug-debugger.c, debug-debugger.h: warning fixes.
16175         * driver.c: updated copyright year and made it fit in one line.
16176
16177 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16178
16179         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16180
16181 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16182
16183         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16184
16185         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16186
16187         * iltests.il: Add new test for bug #80507.
16188
16189 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16190
16191         * mini-arm.h: use soft-float also on vfp for now.
16192
16193 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16194
16195         * mini.c: fix some more soft-float issues.
16196
16197 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16198
16199         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16200
16201 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16202         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16203         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16204         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16205
16206 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16207
16208         * mini-arm.c: typo fix.
16209
16210 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16211
16212         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16213
16214 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16215
16216         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16217         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16218
16219         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16220
16221         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16222
16223         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16224         
16225         * inssel.brg: Fix a warning.
16226
16227         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16228
16229         * abcremoval.c ssa.c ssapre.c: Update after this change.
16230         
16231         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16232
16233         * dominators.c (df_set): Use mono_bitset_union_fast.    
16234
16235 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16236
16237         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16238         mini-codegen.c: reduce relocations and memory usage for the cpu
16239         description.
16240
16241 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16242
16243         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16244
16245         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16246         to reduce their size.
16247
16248 2007-01-19 Mark Mason <mason@broadcom.com>
16249
16250         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16251         * mini-mips.c: more configuration macros, support long conditional branches, additional
16252         asserts, fix epilog instrumentation.
16253         * mini-mips.h: use standard stack walk
16254         * cpu-mips.md: increase size of div, rem and conditional branches
16255         
16256 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16257
16258         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16259         to cpu spec data.
16260
16261 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16262
16263         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16264         (compile_method): Ditto.
16265
16266         * aot-runtime.c (decode_klass_info): Ditto.
16267
16268         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16269         needed by the code generated by inssel.brg. Also fix a warning.
16270
16271 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16272
16273         * mini.c: deal with enums that become genericinsts by
16274         being nested in a generic class (bug #79956).
16275
16276 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16277
16278         * mini.c: match the generic definition to check for
16279         private access with generic types (bug #78431).
16280
16281 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16282
16283         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16284         to make life easier for people cross-compiling that insist on not
16285         using scratchbox.
16286
16287 2007-01-17 Mark Mason <mason@broadcom.com>
16288
16289         * inssel-long.brg: patch to deal with mips missing flags
16290         * inssel-long32-mips.brg: implement overflow checks
16291         * insset-mips.brg: implement overflow checks
16292         * mini-mips.h: implement conditional exception handling
16293         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16294           Remove unused code, minor cleanups.
16295         * exceptions-mips.c: minor cleanups
16296         * mini-ops.h: add mips conditional exception ops
16297         * cpu-mips.md: add mips conditional exception ops
16298
16299         
16300 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16301
16302         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16303         to deal with mips missing of flags.
16304
16305 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16306
16307         * exceptions-ppc.c: execute fault handlers.
16308
16309 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16310
16311         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16312
16313 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16314
16315         * mini.c: handle also floating point values in initialize_array.
16316
16317 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16318
16319         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16320         array initialization and make it conditional on the intrins option.
16321
16322 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16323
16324         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16325         relocations and put the patch info names close to the enum definition.
16326
16327 2007-01-15 Mark Mason <mason@broadcom.com>
16328
16329         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16330
16331 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16332
16333         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16334
16335 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16336
16337         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16338
16339 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16340
16341         * Makefile.am: distribute the mips sources.
16342
16343 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16344
16345         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16346         directly.
16347
16348 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16349
16350         * cpu-x86.md: back out for now as this triggers other regressions.
16351
16352 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16353
16354         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16355         to eax:edx, so ecx can't get allocated to them (bug #80489).
16356
16357 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16358
16359         * mini.c, mini-exceptions.c: enabled running fault handlers
16360         (bug #80469).
16361
16362 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16363
16364         * driver.c: If nothing fail, do not use the string "failed",
16365         because it makes it very annoying to view test result logs on the
16366         web. 
16367
16368 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16369
16370         * debug-debugger.c (mono_debugger_main): Rename "main" to
16371         "main_method" to prevent a warning.
16372
16373         Remove a warning for unused field.
16374
16375 2006-12-28  Martin Baulig  <martin@ximian.com>
16376
16377         * debug-debugger.c
16378         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16379
16380 2006-12-22  Martin Baulig  <martin@ximian.com>
16381
16382         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16383         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16384         seperate `.mdb_debug_info' section, so we can access it from the
16385         debugger even if the binary is stripped.
16386
16387         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16388         from the `.mdb_debug_info' here to prevent the linker from
16389         removing that section.
16390
16391         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16392         mdb-debug-info64.s.
16393
16394 2006-12-19  Robert Jordan  <robertj@gmx.net>
16395
16396         * mini-x86: enable the code to return small structures in
16397         registers for FreeBSD as well. Fixes bug #80278.
16398         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16399
16400 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16401
16402         * mini-x86.c: align the stack when calling the profiler
16403         function instrumenting the prolog (on OSX).
16404
16405 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16406
16407         * mini.c: emit a break opcode where Debugger.Break () is called.
16408
16409 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16410
16411         * mini.c (mono_method_to_ir): Provide useful information on this
16412         assert, to prevent others from debugging like I did.
16413
16414 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16415
16416         * mini.c: enable code which was incorrectly commented
16417         (bug #80235).
16418
16419 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16420
16421         * mini-x86.c: enable on OSX, too, the code to return small
16422         structures in registers.
16423
16424 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16425
16426         * mini-x86.c: remove the use of the dynamic code manager here, too.
16427
16428 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16429
16430         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16431         mono_debugger_create_notification_function() to use
16432         mono_global_codeman_reserve () instead of a dynamic code manager.
16433
16434 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16435
16436         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16437         ves_array_element_address() jit icall and use a generated
16438         managed method instead (which is about 4 times faster for a rank 3
16439         array access).
16440
16441 2006-11-29  Mark Mason  <mason@broadcom.com>
16442
16443         * basic-calls.cs: additional tests for passing
16444         structures as function arguments.
16445
16446 2006-11-29  Mark Mason  <mason@broadcom.com>
16447
16448         * mini-mips.h: disable custom exception handling
16449         * mini-mips.c: throw/rethrow should use jalr to call
16450         exception stubs.  Fixed bug with passing structures
16451         by value. More support for tracing floating point
16452         functions.
16453
16454 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16455
16456         * mini.c: fixed typo in the soft-float ldind.r4 handling
16457         (bug #80086).
16458
16459 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16460
16461         * mini.c, mini.h, driver.c: added --runtime command line
16462         option to select a different runtime than the autodetected one.
16463         * jit.h: added API for embedders to initialize with a specific
16464         runtime version.
16465
16466 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16467
16468         * mini.c: handle also boxing of r4 values (bug #80024).
16469
16470 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16471
16472         * mini-ppc.c: force indirect calls until we reserve
16473         enough address space for all the generated code.
16474
16475 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16476
16477         * exceptions-arm.c: workaround bugs in the libc definition
16478         of struct ucontext.
16479
16480 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16481
16482         * inssel.brg: fixes from me and Mark Mason.
16483
16484 2006-11-23  Dick Porter  <dick@ximian.com>
16485
16486         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16487         semaphore display now we've fixed the initial value
16488
16489 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16490
16491         * inssel.brg: partially revert the last change to fix the build.
16492
16493 2006-11-21  Mark Mason  <mason@broadcom.com>
16494
16495         * inssel.brg: Add and use compare-and-branch macros to support
16496         architectures that do not have condition code registers (ie. MIPS).
16497         * *-mips.{c,brg,md}: Fix copyright statements
16498
16499 2006-11-20  Mark Mason  <mason@broadcom.com>
16500
16501         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16502         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16503         * mini.h: Added declaration for mono_print_ins()
16504         * mini-codegen.c: added ins_spec initializer for MIPS
16505         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16506         vreg to be virtual and hreg to be non-virtual.
16507         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16508         is not yet working/implemented correctly.
16509         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16510         non-static, fixup calls to print_ins() from other parts in the file.
16511
16512 2006-11-20  Mark Mason  <mason@broadcom.com>
16513
16514         * basic-calls.cs: added tests for passing structures as arguments
16515         to calls.
16516
16517 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16518
16519         * inssel-long32.brg: optimize signed division by power of two.
16520
16521 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16522
16523         * mini-arm.c: added support for interworking with thumb code
16524         (mono must be still be built using the ARM instruction encoding).
16525
16526 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16527
16528         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16529         verifier has different rules for it.   Fixes a few verifier issues
16530         in the test suite.
16531
16532         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16533         at the end, so people know what happened.
16534
16535 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16536
16537         * brach-opts.c: in optimize_exception_target() make sure we
16538         are in a catch clause (fixes bug #79871).
16539
16540 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16541
16542         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16543         more soft-float support fixes.
16544
16545 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16546
16547         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16548         that are passed half on the stack and half in registers.
16549
16550 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16551
16552         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16553         more mips integration work from Mark E Mason 
16554         <mark.e.mason@broadcom.com>.
16555
16556 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16557
16558         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16559         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16560         tramp-mips.c: added sources for the mips port, not
16561         integrated in the build yet. Contributed by
16562         Mark E Mason <mark.e.mason@broadcom.com>.
16563
16564 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16565
16566         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16567
16568 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16569
16570         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16571         put the soft-float rules in its own file since it seems to
16572         break s390 compilation.
16573
16574 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16575
16576         * mini-arm.c: fixed wrnings.
16577
16578 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16579
16580         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16581         inssel-arm.brg: ARM support for soft-float.
16582
16583 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16584
16585         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16586         loads and stores of 32 bit fp values.
16587
16588 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16589
16590         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16591
16592         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16593         works. Fixes #79852 and #79463.
16594
16595 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16596
16597         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16598         more soft-float support WIP and fixes.
16599
16600 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16601
16602         * mini-arm.c: some VFP updates.
16603
16604 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16605
16606         * mini-exceptions.c: 0 is a valid local var offset in some
16607         architectures, don't assert (bug #78508).
16608
16609 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16610
16611         * exceptions-arm.c: fixed off by one error in stack walk code.
16612
16613 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16614
16615         * mini.h, mini.c: more precise tracking of type load exceptions.
16616
16617 2006-11-03  Robert Jordan  <robertj@gmx.net>
16618
16619         * Makefile.am: [WIN32] Add monow.exe target.
16620         * driver.c: [WIN32] Don't detach the console when debugging.
16621         Fixes bug #79797.
16622         
16623 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16624
16625         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16626
16627 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16628
16629         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16630
16631         * driver.c (mini_regression): Fix --regression with AOT.
16632
16633         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16634
16635 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16636
16637         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16638
16639         * mini-sparc.h: Don't use sigaction on sparc/linux.
16640
16641         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16642
16643         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16644
16645         * mini-exceptions.c: Add proper include files for getpid ().
16646
16647 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16648
16649         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16650         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16651         method.
16652
16653         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16654         name cache to reduce its size.
16655
16656         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16657
16658 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16659
16660         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16661         the mono_lmf TLS variable.
16662
16663         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16664         trampoline lmf frames.  
16665
16666         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16667
16668 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16669
16670         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16671         the mono_lmf TLS variable.
16672
16673         * mini-exceptions.c: Access the LMF structure through accessors.
16674
16675         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16676         variable instead of in jit_tls->lmf.
16677
16678         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16679         
16680         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16681         trampoline lmf frames.
16682
16683         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16684
16685 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16686
16687        * mini.c trace.c mini-x86.c: Revert these too.
16688         
16689        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16690        signature change.
16691
16692 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16693
16694         * genmdesc.c: removed now dead code.
16695
16696 2006-10-09  Robert Jordan <robertj@gmx.net>
16697
16698         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16699
16700 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16701
16702         * mini.h: do not leave gaps in the opcode values.
16703
16704 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16705
16706         * jit-icalls.h: flag functions as internal here, too.
16707
16708 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16709
16710         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16711         functions with the internal attribute.
16712
16713 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16714
16715         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16716
16717 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16718
16719         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16720         for soft-float.
16721
16722 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16723
16724         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16725         tail calls as on other platforms.
16726
16727         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16728
16729         * iltests.il: Add a few tailcall tests.
16730
16731 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16732
16733         * driver.c: fix loop for old compilers (bug #79521).
16734
16735 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16736
16737         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16738
16739         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16740
16741         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16742         metadata without any code.
16743
16744         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16745         more precise debugging information using gdb.
16746
16747 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16748
16749         * inssel-ia64.brg: Make the helper methods static.
16750
16751 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16752
16753         * inssel-x86.brg: make the helper methods static.
16754
16755 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16756
16757         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16758
16759 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16760
16761         * mini.c: updates for monoburg changes.
16762         * inssel.brg: make a few helper functions static as they should.
16763
16764 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16765
16766         * Makefile.am: Move mini-codegen.c to common_sources.
16767
16768 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16769
16770         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16771         instructions.
16772         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16773         mini-ppc.h: port to use the common local register allocator.
16774
16775 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16776
16777         * mini.h: Remove the comment too then.
16778
16779 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16780
16781         * mini.h: put back backend.data which is to be used shortly and
16782         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16783         pointers on 4 byte boundaries it'd have much bigger issues running
16784         and you can ifdef it out anyway.
16785
16786 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16787
16788         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16789         MonoInst size by 4 bytes on 64 bit machines.
16790
16791 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16792
16793         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16794         replacement with more meaningful field names. Arch maintainers, please
16795         check the assigned names are good enough for your arch.
16796
16797 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16798
16799         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16800         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16801
16802 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16803
16804         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16805         relocations and memory requirements, put the optimization flags
16806         definitions in their own file.
16807
16808 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16809
16810         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16811
16812         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16813
16814 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16815
16816         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16817
16818 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16819
16820         * inssel.brg: use the correct function to get the size of an item
16821         in an array, given an element class.
16822         * aot-compiler.c: do not access class->class_size directly.
16823
16824 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16825
16826         * mini.h, debug-mini.c: added a debugging function to print
16827         info about local variables and arguments in a jitted method.
16828
16829 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16830
16831         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16832
16833         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16834
16835 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16836
16837         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16838         inner and outer loops when passing vtypes.
16839
16840 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16841
16842         * mini-ppc.c: take into account the cpu errata for cache flushing
16843         which caused some random errors (bug #79381).
16844
16845 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16846
16847         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16848         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16849
16850 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16851
16852         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16853         loaded.
16854
16855         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16856         freebsd ports tree.
16857
16858         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16859         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16860
16861         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16862         displacement.
16863
16864 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16865
16866         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16867
16868 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16869
16870         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16871         macro does not have to be changed during debugging.
16872
16873         * 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>.
16874
16875         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16876
16877         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16878         
16879         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16880         MONO_ARCH_NO_EMULATE_MUL is defined.
16881
16882         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16883
16884         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16885
16886         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16887
16888         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16889         
16890 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16891
16892         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16893         stuff to mini-exceptions.c where it is used.
16894
16895         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16896         setup code, the real one is in mini-exceptions.c.
16897
16898         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16899         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16900         some changes from the freebsd ports tree.
16901
16902         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16903         constants.
16904         
16905         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16906
16907 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16908
16909         * mini.c: on Linux, check for /proc to be mounted
16910         (bug# 79351, novell bug#201204).
16911
16912 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16913
16914         * mini.c: handle cases where pthread_attr_getstack() behaves
16915         incorrectly (bug #78096).
16916
16917 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16918
16919         * mini-arm.c: support larger stack frames (bug #79272).
16920
16921 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16922
16923         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16924
16925         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16926         tokens.
16927
16928         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16929         mono_class_from_name () to find a class from its name.
16930
16931         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16932
16933 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16934
16935         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16936
16937 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16938
16939         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16940
16941 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16942
16943         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16944         callinfo->trampoline.
16945
16946         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16947         fixes #79271.
16948         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16949         future.
16950
16951 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16952
16953         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16954
16955 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16956
16957         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16958         stats.method_trampolines, it is already done by the generic trampoline code.
16959
16960         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16961         
16962 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16963
16964         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16965
16966         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16967
16968         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16969
16970         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16971         
16972         * mini.c (print_jit_stats): Print new stats.
16973
16974         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16975
16976 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16977
16978         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16979         Address on two dimensional arrays. Fixes #78729.
16980
16981         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16982
16983         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16984         a method.
16985
16986         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16987
16988         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16989         #79130.
16990         
16991         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16992         a race condition.
16993         (mini_get_ldelema_ins): Ditto.
16994
16995 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16996
16997         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16998         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16999         Fixes #79213.
17000
17001 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17002
17003         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17004         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17005
17006         * exceptions-s390x.c: Cosmetic change.
17007
17008         * tramp-s390.c: Fix warning.
17009
17010         * cpu-s390.md: Correct length of mul_imm.
17011
17012 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17013
17014         * aot-compiler.c: added binary writer with ELF backend
17015         implementation (only on Linux/x86 for now).
17016
17017 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17018
17019         * Makefile.am: Don't run net 2.0 AOT tests.
17020
17021         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17022         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17023
17024         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17025
17026 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17027
17028         * aot-compiler.c: simplified and refactored the asm-writing code
17029         to allow different backends.
17030
17031 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17032
17033         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17034
17035         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17036         little. Share patches of type TYPE_FROM_HANDLE as well.
17037
17038         * mini.c (mono_patch_info_equal): New helper function.
17039         (mono_patch_info_hash): Ditto.
17040
17041         * aot-compiler.c (emit_method_code): Fix s390 build.
17042
17043         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17044         is not handled because it is stored as a flag and not as a type ctor. Fixes
17045         #79016.
17046
17047 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17048
17049         * aot-compiler.c: Fix computation of GOT slot statistics.
17050         
17051         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17052         Also remove support for not PIC AOT.
17053
17054         * mini.h: Bump AOT file format version.
17055
17056         * objects.cs: Add a test for #78990.
17057
17058         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17059         (peter.dettman@iinet.net.au). Fixes #79087.
17060
17061         * basic-long.cs: Add a test for the above.
17062
17063 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17064
17065         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17066         
17067         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17068         code somewhat.
17069
17070 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17071
17072         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17073         exceptions.
17074
17075 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17076
17077         * mini.c: Don't verify COM proxy invoke calls
17078         
17079
17080 2006-08-10  Dick Porter  <dick@ximian.com>
17081
17082         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17083         which process is holding semaphores locked.
17084
17085 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17086
17087         * mini-ia64.c mini-amd64.c: Fix #79027.
17088
17089         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17090
17091         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17092
17093         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17094         implicit arguments in a vararg call. Fixes #79027.
17095
17096 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17097
17098         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17099         (mono_get_array_new_va_signature): Ditto.
17100
17101 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17102
17103         * aot-runtime.c: Call init_plt lazily.
17104
17105         * inssel-long.brg: Fix unsigned long->int conversion.
17106
17107         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17108
17109         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17110         that most data is now in the .rss/.data section.
17111
17112 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17113
17114         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17115
17116         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17117
17118         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17119
17120         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17121
17122         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17123         virtual call. Fixes #79010.
17124
17125         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17126         and use the result as the this argument in the real call.
17127
17128         * generics.2.cs: Add a new test for #79010.
17129         
17130 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17131
17132         * mini-x86.c: Fix a warning.
17133
17134         * aot-compiler.c: Add a bunch of statistics.
17135
17136         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17137
17138 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17139
17140         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17141
17142 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17143
17144         * 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>.
17145
17146 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17147
17148         * mini.c (mono_method_to_ir): Obtain the original method in the
17149         CIL stream and use this to perform validation.
17150
17151         Fixed: #78816
17152
17153 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17154
17155         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17156         (mono_arch_call_opcode): Ditto.
17157
17158         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17159         #78826.
17160
17161         * mini.c (mono_patch_info_dup_mp): New helper function.
17162         
17163         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17164         compilation. Fixes #78827.
17165
17166 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17167
17168         * declsec.c: Use original security informations for
17169           MONO_WRAPPER_MANAGED_TO_MANAGED.
17170
17171 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17172
17173         * mini.c: Allow Com Interop methods/classes and
17174         don't verify COM wrapper calls
17175         
17176
17177 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17178
17179         * inssel-long32.brg: Fix long->i4 checked conversion.
17180
17181         * exceptions.cs: Add a test for the above.
17182
17183 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17184
17185         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17186
17187         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17188         leaks.
17189
17190         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17191         #78775.
17192
17193 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17194
17195         * mini.c: Fix solaris/x86 exception handling.
17196
17197         * Makefile.am: Get rid of $(ICU_LIBS).
17198
17199 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17200
17201         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17202         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17203         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17204
17205         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17206
17207         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17208         this function causes a SIGSEGV.
17209
17210 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17211
17212         * mini.c: Remove unused solaris/x86 includes.
17213
17214 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17215
17216         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17217
17218 2006-06-20  Jb Evain  <jbevain@gmail.com>
17219
17220         * cpu-g4.md: fix max length of start_handler instruction.
17221
17222 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17223         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17224
17225 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17226         * ssa.c: Fixed bug 78653 for SSA based deadce.
17227         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17228         MonoInst.flags, used in SSA based deadce.
17229         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17230         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17231
17232 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17233
17234         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17235         it can end up using non executable memory on ppc64 systems
17236         running ppc32 userspace (fix from Johannes Berg).
17237
17238 2006-06-14  Dick Porter  <dick@ximian.com>
17239
17240         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17241         4.1.1
17242
17243 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17244         * mini.c: Made so that inline is locally disabled if it would
17245         trigger a .cctor, because too many apps depend on this behavior
17246         (which seems to be also the one of the MS CLR).
17247
17248 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17249
17250         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17251         No idea why this worked before.
17252
17253         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17254         which branch to outer exception clauses since they could skip the
17255         inner finally clauses. Fixes #78633.
17256
17257         * exceptions.cs: Add a test for the above.
17258
17259         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17260         Fixes #78629.
17261
17262         * iltests.il: Add a test for the above.
17263
17264 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17265
17266         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17267         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17268
17269         * iltests.il: Add a test for the above.
17270
17271 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17272
17273         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17274         
17275         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17276         methods as instrinsics.
17277
17278 2006-06-09  Wade Berrier <wberrier@novell.com>
17279
17280         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17281         (simple-cee-ops.h ssapre-mini-ops.h)
17282
17283 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17284
17285         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17286         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17287         instruction).
17288         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17289         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17290
17291 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17292
17293         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17294
17295 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17296
17297         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17298         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17299         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17300         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17301         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17302         of opcodes, so that bug 78549 should not happen again.
17303         * ssapre.c: Updated to use the renamed files.
17304
17305 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17306
17307         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17308         in OP_ATOMIC_EXCHANGE_I4.
17309
17310 2006-06-07  Wade Berrier <wberrier@novell.com>
17311
17312         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17313         in mono_debugger_create_notification_function)
17314
17315 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17316
17317         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17318         
17319         * mini.c (type_from_stack_type): Disable some changes which do not
17320         seem to work.
17321
17322         * driver.c: Reenable opts.
17323
17324         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17325         of the evaluation stack.
17326         
17327         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17328         evaluation stack trace at entry to the bblock.
17329
17330         * mini.c (merge_stacks): New function to perform verification of stack merges.
17331         Turned off by default.
17332
17333         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17334         STACK_MP.
17335         
17336 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17337
17338         * local-propagation.c: Fixed bug 78549.
17339
17340 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17341
17342         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17343
17344 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17345
17346         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17347         tramp-arm.c, tramp-ia64.c
17348         (mono_debugger_create_notification_function): Update signature to
17349         new signature and use new protocol for creating the notification
17350         function.  
17351
17352         Should fix the build.
17353
17354 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17355
17356         * exceptions-ppc.c (mono_jit_walk_stack)
17357         (ves_icall_get_frame_info): Fix the build
17358
17359 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17360
17361         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17362
17363 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17364
17365         * il2tests.2.il: New file for generics CIL tests.  Add test for
17366         #78019.
17367         * Makefile.am: Update.
17368
17369         Fix #78019
17370         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17371         to nullable types.
17372
17373 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17374
17375         * aliasing.c: Fixed bug 78311.
17376
17377 2006-05-29  Martin Baulig  <martin@ximian.com>
17378
17379         * mini-exceptions.c (mono_find_jit_info): When computing the
17380         native offset, check whether we're actually inside the method's
17381         code; call mono_debug_print_stack_frame() to format the frame.
17382         (ves_icall_System_Exception_get_trace): Call
17383         mono_debug_print_stack_frame() to format the stack frame.
17384         (ves_icall_get_trace): Update to the new debugging API.
17385         (mono_jit_walk_stack_from_ctx): Likewise.
17386         (ves_icall_get_frame_info): Likewise.
17387
17388         * mini.c (get_method_from_ip): Use the new debugging API.
17389         (mono_print_method_from_ip): Likewise.
17390
17391         * exceptions-ppc.c
17392         (mono_jit_walk_stack): Use the new debugging API.
17393         (ves_icall_get_frame_info): Likewise.   
17394
17395 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17396
17397         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17398
17399 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17400
17401         * mini.c: Added "limitator" to inline for debugging.
17402
17403 2006-05-24  Martin Baulig  <martin@ximian.com>
17404
17405         * debug-debugger.c (mono_debugger_init): Create a private,
17406         malloc()-based code manager for the notification function and
17407         intentionally leak it on exit.  This fixes the crash-on-exit race
17408         condition.
17409
17410         * tramp-amd64.c
17411         (mono_debugger_create_notification_function): Added
17412         `MonoCodeManager *' argument.
17413
17414         * tramp-x86.c
17415         (mono_debugger_create_notification_function): Added
17416         `MonoCodeManager *' argument.
17417
17418 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17419
17420         * aliasing.c: Fixed 64 bit issue.
17421         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17422         default since all known bugs are fixed (one more time!).
17423
17424 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17425
17426         * mini.c: write barrier support.
17427
17428 2006-05-23  Martin Baulig  <martin@ximian.com>
17429
17430         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17431         check at the top of the file.
17432
17433 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17434
17435         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17436         reverting changes without reason and without changelog entries.
17437
17438 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17439
17440         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17441         to a few opcodes. Fixes #78439.
17442
17443         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17444         consistency with other archs.
17445
17446         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17447
17448 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17449
17450         * debug-debugger.c: fix the build.
17451
17452 2006-05-17  Martin Baulig  <martin@ximian.com>
17453
17454         * debug-debugger.c
17455         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17456         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17457         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17458         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17459
17460 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17461
17462         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17463
17464 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17465
17466         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17467         MONO_TYPE_GENERICINST.
17468         
17469         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17470         MONO_TYPE_GENERICINST.
17471
17472 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17473
17474         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17475         #78325.
17476
17477 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17478
17479         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17480         mempool.
17481         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17482
17483 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17484
17485         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17486         mono_trace_cleanup ().
17487
17488         * iltests.il: Fix problem with the newly added test.
17489
17490         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17491         due to register constraints, free up the previous hreg. Fixes #78314.
17492
17493         * iltests.il: Add new test for #78314.  
17494
17495         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17496         Interlocked.Add. Fixes #78312.
17497
17498         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17499         
17500 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17501
17502         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17503
17504 2006-05-05  Martin Baulig  <martin@ximian.com>
17505
17506         * debug-mini.c (mono_debug_open_block): New method.
17507
17508         * mini-amd64.c
17509         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17510         the beginning of each basic block.
17511
17512         * mini-x86.c
17513         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17514         the beginning of each basic block.
17515
17516 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17517
17518         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17519         default until I understand why they break the build on amd64.
17520
17521 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17522
17523         * mini.c (mini_cleanup): Call mono_cleanup ().
17524
17525         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17526         errors.
17527
17528 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17529
17530         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17531         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17532         default since all known bugs are fixed, and I cannot reproduce bug
17533         77944... I'm asking Matt Hargett to test again after this commit.
17534
17535 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17536
17537         * mini-codegen.c: Fixed typo that thrashed inline.
17538
17539 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17540
17541         * dominators.c (compute_dominators): Avoid using a worklist since
17542         it is not correct in some cases. Instead, iterate over all bblocks as
17543         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17544
17545 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17546
17547         * mini.c (mono_jit_compile_method_inner): Use
17548         mono_prepare_exception_from_error that resets the value
17549         internally.
17550
17551 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17552
17553         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17554         
17555 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17556
17557         * aliasing.c: Fixed bug 78210.
17558
17559 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17560
17561         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17562         default until all their problems (or the ones they trigger) are fixed.
17563
17564 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17567         
17568         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17569         as loaded only after resolving patches since that could invoke the same method.
17570
17571         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17572
17573         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17574         functions.
17575
17576         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17577         AOT loader.
17578
17579         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17580         stack.
17581
17582         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17583         made from AOT code through the PLT table.
17584
17585         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17586         holding the plt offset when a call is made to the aot plt trampoline.
17587         
17588 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17589
17590         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17591         amd64 AOT support.
17592
17593         * Makefile.am (common_sources): Fix build breakage.
17594
17595         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17596         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17597         intra-assembly calls if possible.
17598         
17599         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17600
17601         * mini-trampolines.c: Handle PLT entries.
17602
17603         * mini.c: Avoid creating a GOT var for calls.
17604
17605         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17606         from mscorlib code.
17607
17608         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17609         from mscorlib code.
17610
17611         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17612         AOT code.       
17613
17614         * mini.h: Bump AOT file format version.
17615         
17616         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17617         covers more cases.
17618
17619 2006-04-25  Martin Baulig  <martin@ximian.com>
17620
17621         * driver.c: Disable copyprop, consprop and inline when running
17622         inside the debugger.
17623
17624 2006-04-25  Martin Baulig  <martin@ximian.com>
17625
17626         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17627         with `get_current_thread' and added `detach'.
17628         (MonoDebuggerMetadataInfo): Added `thread_size',
17629         `thread_tid_offset', `thread_stack_ptr_offset' and
17630         `thread_end_stack_offset'.
17631
17632 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17633
17634         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17635         aot-runtime.c.
17636
17637         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17638         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17639
17640         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17641
17642         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17643
17644         * aot.c: Add support for ADJUSTED_IID.  
17645
17646 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17647
17648         * aot.c (emit_method_order): Don't align method_order_end.
17649
17650         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17651         the interface ID changes.
17652
17653 2006-04-21  Dick Porter  <dick@ximian.com>
17654
17655         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17656         cleaning up a thread.  Fixes the new part of bug 77470.
17657
17658 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17659
17660         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17661         to managed wrapper.
17662                      
17663 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17664
17665         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17666         
17667         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17668         SIGSEGV. Fixes #78072.
17669
17670         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17671         unregister our SIGABRT handler.
17672
17673 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17674
17675         * mini.c: Disabled inline where it can alter the call stack in a
17676         way visible from managed code.
17677         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17678         default.
17679
17680 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17681
17682         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17683         on other platforms. Fixes #78089.
17684
17685 2006-04-13  Martin Baulig  <martin@ximian.com>
17686
17687         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17688         determine whether we're inside the debugger.
17689
17690         * debug-debugger.h
17691         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17692
17693 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17694
17695         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17696         handler clauses. Fixes #78024.
17697
17698         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17699         in the CALL_MEMBASE opcodes. Fixes #78088.
17700         (mono_arch_get_vcall_slot_addr): Ditto.
17701
17702 2006-04-10  Martin Baulig  <martin@ximian.com>
17703
17704         * debug-debugger.c: The thread handling code has now been moved
17705         into ../metadata/threads.c.
17706
17707 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17708
17709         * driver.c (mono_main): Fix --with-gc=none build.
17710
17711         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17712         (mono_spillvar_offset_float): Ditto.
17713         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17714         hreg, not when its !global, since on ia64, there is a third category: stacked
17715         registers.      
17716
17717 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17718
17719         * mini.c: set MonoInst->klass for load field address and a few other
17720         places.
17721
17722 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17723
17724         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17725
17726 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17727
17728         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17729         the branch opt changes.
17730
17731 2006-04-06  Dick Porter  <dick@ximian.com>
17732
17733         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17734         
17735         * wapihandles.c (mini_wapi_seminfo): 
17736         * driver.c (mono_main): Add semaphore info option
17737
17738 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17739
17740         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17741         branch optimization changes. Fixes #78009.
17742
17743 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17744
17745         * mini.c: ignore accessibility of methods in managed->native wrappers.
17746
17747 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17748
17749         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17750         
17751         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17752
17753 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17754
17755         * mini.c: Modify the branch optimizations to preserve the invariant that
17756         the entries inside the in_bb and out_bb arrays are unique.
17757         (mono_unlink_bblock): Avoid creation of new arrays.
17758
17759 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17760
17761         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17762         change (#77992).
17763
17764 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17765
17766         * mini.c (optimize_branches): Remove the "optimizations" in
17767         the cbranch1/cbranch2 -> branch cases which were causing several
17768         problems in the past. Fixes #77986.
17769
17770 2006-03-31  Chris Toshok  <toshok@ximian.com>
17771
17772         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17773         default optimizations :(
17774
17775 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17776
17777         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17778         branch.
17779
17780 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17781
17782         * local-propagation.c: Added comments to structs and removed
17783         "Mono" prefixes from local tree mover types.
17784
17785 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17786
17787         * Makefile.am (arch_sources): Define this for each architecture so 
17788         libmono_la_SOURCES is defined in one place.
17789
17790 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17791
17792         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17793         from handles/.
17794
17795 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17796
17797         * driver.c: print the GC name supplied by configure.
17798
17799 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17800
17801         * local-propagation.c: Added tree mover, and moved here all the
17802         local propagation code from mini.c
17803         * mini.c: Added support for treeprop, and moved all the local
17804         propagation code to local-propagation.c
17805         * mini.h: Added support for treeprop
17806         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17807         treeprop, inline and deadce by default
17808         * Makefile.am: Added local-propagation.c
17809
17810 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17811
17812         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17813
17814 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17815
17816         * debug-debugger.c: make it compile without the Boehm GC.
17817
17818 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17819
17820         * mini.c: fixed issue with mismatch when an icall is registered
17821         with multiple names but same address.
17822
17823 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17824
17825         * declsec.c, mini-exceptions.c: use write barrier to set reference
17826         fields of managed objects.
17827
17828 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17829
17830         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17831         (can_access_internals): Fix a warning.
17832
17833         * mini.c (print_method_from_ip): Rename this to 
17834         mono_print_method_from_ip so it gets exported.
17835
17836         * trace.c: Deal with strings inside StringBuilder's containing garbage
17837         and fix memory leaks. Fixes #77848.
17838
17839 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17840
17841         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17842         fixes #77787.
17843
17844 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17845         
17846         * mini-s390.c: Remove OP_X86_TEST_NULL.
17847
17848 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17849
17850         * mini.c: use the correct GetHashCode() for the moving collector.
17851
17852 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17853
17854         * liveness.c: Regalloc spill cost tuning.
17855
17856 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17857         
17858         * mini-s390x.h: Correct S390_LONG macro.
17859
17860         * mini-s390x.c: Cleanup unused code.
17861
17862 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17863
17864         * jit-icalls.h: New file.
17865
17866         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17867         icalls and include that instead of including jit-icalls.c.
17868
17869         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17870         OP_X86 opcodes.
17871
17872 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17873
17874         * mini.c: when checking for member accessibility, also check for
17875         friend assemblies and for explicit interface implementations.
17876
17877 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17878
17879         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17880
17881         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17882
17883         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17884         common cases are done first.    
17885
17886         * mini-ops.h: Only define platform specific opcodes on the given platform.
17887
17888         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17889         branch.
17890         
17891 2006-03-14  Martin Baulig  <martin@ximian.com>
17892
17893         Revert Paolo's change from r57348:
17894
17895         * mini.h: don't use gboolean for bitfields.
17896         * mini.c: verifier changes for fields and methods accessibility.
17897
17898 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17899
17900         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17901
17902         * mini-s390x.c: Fix conv_r_un.
17903
17904         * cpu-s390, cpu-s390x.md: Fix lengths.
17905
17906 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17907
17908         * mini.c: nested types have access to all the nesting
17909         levels, not just the enclosing types.
17910
17911 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17912
17913         * mini.c: added a few more verification checks.
17914
17915 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17916
17917         * liveness.c: Merge optimizations from the linear-il branch.
17918
17919 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17920
17921         * mini-ia64.c (emit_call): Add a comment.
17922
17923         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17924
17925         * tramp-ia64.c: Fix some warnings.
17926
17927 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17928
17929         * mini.h: don't use gboolean for bitfields.
17930         * mini.c: verifier changes for fields and methods accessibility.
17931
17932 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17933
17934         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17935         lazy icall wrapper changes.
17936
17937         * dominators.c: Replace all the dominator algorithms with faster
17938         ones from the linear-il branch.
17939
17940         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17941         the mempool.
17942
17943         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17944         common cases are done first.
17945
17946         * mini-amd64.c: Fix some warnings.
17947
17948         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17949         from the mempool.
17950
17951         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17952         added code.
17953
17954         * mini.h: Add a missing prototype.
17955
17956 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17957
17958         * mini.c: Compile icall wrappers lazily.
17959
17960         * mini-codegen.c: Use printf instead of g_print since its much faster.
17961
17962         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17963         function.
17964
17965         * mini.c (optimize_branches): Cache the negative result from 
17966         remove_block_if_useless ().
17967
17968         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17969         Also fix some bblock linking issues.
17970
17971         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17972         assembly files.
17973
17974         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17975
17976         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17977         accessed fields first, for better cache behavior.
17978         
17979 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17980
17981         * mini.c: speedup IList<T> array accesses.
17982
17983 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17984
17985         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17986         inline_costs counter. Fixes #77190.
17987
17988 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17989
17990         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17991         trace messages. Fixes #77706.
17992
17993 2006-03-04  Martin Baulig  <martin@ximian.com>
17994
17995         * tramp-amd64.c, tramp-x86.c
17996         (mono_debugger_create_notification_function): Use
17997         mono_global_codeman_reserve() to allocate a buffer at runtime and
17998         return it.
17999
18000         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18001
18002         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18003         notification function at runtime and then call `initialize' in the
18004         `MONO_DEBUGGER__debugger_info' vtable.
18005
18006 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18007
18008         * iltests.il: Fix a visibility problem.
18009
18010 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18011
18012         * driver.c, mini.c: add hooks for the counters API.
18013
18014 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18015
18016         * driver.c: show disabled options.
18017
18018 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18019
18020         * linear-scan.c: always use cost-driven selection.
18021
18022 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18023
18024         * jit-icalls.c (helper_compile_generic_method): Revert change from
18025         2006-02-24.
18026
18027 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18028
18029         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18030
18031 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18032
18033         * inssel.brg: style fixes, mostly to force the updated monoburg
18034         to run for people using svn.
18035
18036 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18037
18038         * mini.c: match monoburg changes.
18039
18040 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18041
18042         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18043         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18044         declaration in the header file.
18045
18046 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18047
18048         * helpers.c: reduce relocations and mem usage.
18049
18050 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18051
18052         * mini.h, mini-codegen.c: disable logging features if
18053         requested by configure.
18054
18055 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18056
18057         * mini.c: tiny verifier changes.
18058
18059 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18060
18061         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18062         cpu-pentium.md: stack alignment changes for osx/x86,
18063         partially from Geoff Norton <gnorton@customerdna.com>.
18064
18065 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18066
18067         * jit-icalls.c (helper_compile_generic_method): Update to changes
18068         in metadata/class.c.
18069
18070 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18071         
18072         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18073         
18074         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18075         interface calls with large offsets.
18076
18077 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18078
18079         * jit-icalls.c (helper_compile_generic_method): Document the
18080         special-case we depend on so that we can inflate the method twice
18081         with the same context with no bad side-effects.
18082
18083 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18084
18085         * mini-x86.c, mini-amd64.c: fix for case when xen support
18086         is disabled.
18087
18088 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18089
18090         * mini-x86.c, mini-amd64.c: generate code to access tls items
18091         in a faster way for Xen systems.
18092
18093 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18094
18095         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18096         updates and compilation fixes for the OSX/x86 port, mostly from
18097         Geoff Norton <gnorton@customerdna.com>.
18098
18099 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18100
18101         * inssel.brg: faster interface call implementation
18102         to sync with the interface_offsets MonoVTable changes.
18103
18104 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18105
18106         * mini.c: more verification checks.
18107
18108 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18109
18110         * mini.c: added a few more verification checks.
18111
18112 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18113
18114         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18115         facility on the processor and use it if available.
18116
18117 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18118
18119         * driver.c, aot.c, mini.c: throw exception if the IL code is
18120         invalid or unverifiable.
18121
18122 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18123
18124         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18125         m.StructField.
18126
18127 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18128
18129         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18130
18131 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18132
18133         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18134         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18135         handling of instantiated generic valuetypes.
18136
18137 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18138
18139         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18140         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18141         instead.
18142
18143         * generics.2.cs: Revert the nullable reftypes tests.
18144
18145 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18146
18147         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18148         using __builtin_frame_address (1) as it doesn't work in the presence
18149         of optimizations. Hopefully fixes #77273.
18150
18151         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18152         -> generics.cs change as it doesn't work with some automake versions.
18153
18154 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18155
18156         * mini.c: handle systems that sue a different way to
18157         retrieve the stack address of the current thread.
18158
18159 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18160
18161         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18162         it specially in the makefile.
18163
18164         * generics.2.cs: Add tests for nullable reference types.
18165
18166 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18167
18168         * mini.c: always handle the case when mono_jit_init()
18169         is called in a thread different from the main thread,
18170         confusing libgc (bug #77309).
18171
18172 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18173
18174         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18175
18176 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18177
18178         * mini.c: change optimize_branches () to use a single loop
18179         and introduce a new optimization to simplify some range checks.
18180
18181 2006-02-03  Martin Baulig  <martin@ximian.com>
18182
18183         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18184         and merged with debugger_thread_manager_add_thread().
18185         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18186         inform the debugger about the main thread.
18187
18188 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18189
18190         * basic.cs: Add test for div.un/rem.un constant folding.
18191
18192 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18193
18194         * cpu-s390x.md: correct int_xor_imm length
18195
18196 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18197
18198         * generics.2.cs: New test for #77442.
18199
18200         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18201         #77442.
18202
18203 2006-02-02  Martin Baulig  <martin@ximian.com>
18204
18205         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18206         <mono/metadata/mono-debug-debugger.h>   
18207
18208         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18209
18210 2006-02-02  Martin Baulig  <martin@ximian.com>
18211
18212         * debug-debugger.h: New header file for debug-debugger.c.
18213
18214         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18215         function is a separate thread anymore; add support for attaching.
18216
18217 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18218
18219         * tramp-x86.c: Fix a warning.
18220
18221 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18222
18223         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18224         on very large methods.
18225
18226         * aot.c (load_patch_info): Fix a warning.
18227
18228 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18229
18230         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18231         mini-ops.h: alu membase optimizations.
18232
18233 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18234
18235         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18236         to speedup StringBuilder.
18237
18238 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18239
18240         * dominators.c (mono_compute_natural_loops): Fix detection of
18241         loop body start blocks.
18242
18243         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18244
18245 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18246
18247         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18248         #75145.
18249
18250 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18251
18252         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18253
18254 2006-01-25  Martin Baulig  <martin@ximian.com>
18255
18256         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18257         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18258         started to cleanup this file a little bit.
18259
18260 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18261
18262         * mini.c: optimize a codepath frequently happening in generics code.
18263
18264 2006-01-23  Martin Baulig  <martin@ximian.com>
18265
18266         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18267
18268         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18269         functions directly.
18270
18271         * driver.c: debug-debugger.c is only available if
18272         `MONO_DEBUGGER_SUPPORTED' is defined.   
18273
18274 2006-01-23  Martin Baulig  <martin@ximian.com>
18275
18276         * debug-debugger.c: Only enable this on platforms where the Mono
18277         Debugger is working (x86 and x86_64).
18278
18279 2006-01-21  Martin Baulig  <martin@ximian.com>
18280
18281         The Mono Debugger is now using the normal `mono' instead of the
18282         `mono-debugger-mini-wrapper' when executing managed code.
18283
18284         * debug-debugger.c: New file; previously known as
18285         debugger/wrapper/wrapper.c.
18286
18287         * debug-mini.c (mono_init_debugger): Removed.
18288
18289         * driver.c (mono_main): Added new `--inside-mdb' command line
18290         argument which is used when running inside the debugger.
18291
18292 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18293
18294         * liveness.c (mono_analyze_liveness): Remove some unused data
18295         structures.
18296
18297 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18298
18299         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18300
18301 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18302
18303         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18304         depends on implementation details of monobitset.
18305
18306         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18307         Fixes #77271.
18308
18309 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18310
18311         * liveness.c: Update after monobitset changes.
18312
18313 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18314
18315         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18316
18317 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18318
18319         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18320
18321         * mini-s390x.c: Remove warning messages.
18322
18323 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18324
18325         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18326
18327 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18328
18329         * generics.2.cs: Add ldelem/stelem_any test.
18330
18331 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18332
18333         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18334
18335 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18336
18337         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18338         
18339 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18340
18341         * generics.2.cs: Reenable vtype tests.
18342
18343         * inssel-x86.brg: Remove an icorrect valuetype rule.
18344
18345 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18346
18347         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18348         initial support for OP_ABS.
18349
18350 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18351
18352         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18353
18354 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18355
18356         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18357         conversion and implement LADD/LSUB.
18358
18359         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18360         architectures.
18361
18362 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18363
18364         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18365
18366         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18367         architectures.
18368
18369 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18370
18371         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18372         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18373         (stack walk problem).
18374
18375 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18376
18377         * aot.c (mono_aot_load_method): Fix a warning.
18378
18379 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18380
18381         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18382
18383 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18384
18385         * iltests.il: Add test for #77148.
18386
18387         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18388         #77148.
18389
18390 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18391
18392         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18393
18394 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18395
18396         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18397         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18398
18399         * basic-long.cs: Add lconv-to-r4/r8 tests.
18400
18401 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18402
18403         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18404
18405         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18406         here as on other archs.
18407
18408 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18409
18410         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18411
18412 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18413
18414         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18415         
18416         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18417
18418         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18419         instrument_prolog; Add memory_barrier instruction.
18420
18421 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18422
18423         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18424
18425 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18426
18427         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18428
18429         * aliasing.c inssel.brg: Fix warnings.
18430
18431         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18432         could skip initialization of some parts of memory.
18433
18434         * mini.c mini-ia64.c: Fix warnings.
18435
18436         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18437
18438 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18439
18440         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18441         a crash seen on sparc.
18442
18443         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18444         
18445         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18446
18447 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18448
18449         * mini-ops.h: Add s390_backchain instruction
18450
18451         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18452
18453         * cpu-s390.md: Add s390_backchain instruction
18454
18455         * mini-s390.c: Significant ABI changes
18456
18457         * mini-s390.h: Cater for zero length structures
18458
18459 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18460
18461         * mini-s390.c: ABI fixes
18462
18463         * inssel-s390.brg: Remove debug statements
18464
18465         * cpu-s390.md: Fix length of ATOMIC_xx operations
18466
18467 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18468
18469         * basic-float.cs: Add float<->long conversion tests.
18470
18471 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18472
18473         * mini-s390.c: Fix LOCALLOC processing.
18474
18475         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18476
18477 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18478
18479         * iltests.il: Add tests for some opcodes not covered by the other
18480         tests.
18481
18482 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18483
18484         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18485         register loading for Tail processing; Correct trace output.
18486
18487         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18488
18489         * cpu-s390.md: Correct size of jmp instruction. 
18490
18491 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18492
18493         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18494
18495 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18496
18497         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18498           Bring s390 up to current level.
18499
18500 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18501
18502         * generics.2.cs: Disable the newly added tests as they do not work yet.
18503         
18504         * generics.2.cs: Add valuetype tests.
18505
18506 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18507
18508         * basic-long.cs: Add i4->u8 test.
18509
18510         * objects.cs: Add tests for JIT intrinsic.
18511
18512         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18513         optimizations lost by a mistake.
18514
18515 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18516
18517         * basic-long.cs: Remove a test moved to objects.cs.
18518
18519         * arrays.cs: Add more array tests.
18520
18521 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18522
18523         * arrays.cs: Add new tests for multi-dimensional arrays.
18524
18525 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18526
18527         * Makefile.am (test_sources2): Add generics.2.cs.
18528         (EXTRA_DIST): Add test_sources2.
18529
18530 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18531
18532         Support for boxing and unboxing nullable types as well as the
18533         isinst operation on nullables, per the CLI ammendment.
18534
18535         * inssel.brg (CEE_ISINST): Special case for nullable
18536
18537         * mini.c (handle_unbox_nullable): new method
18538         (handle_box): Special case for nullable types
18539         (mono_method_to_ir): Call handle_unbox_nullable in correct
18540         places.
18541
18542         * generics.2.cs: New test suite
18543
18544         * Makefile.am: Support for regression tests with generics.
18545
18546 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18547
18548         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18549         allocated to registers. Fixes #76800.
18550
18551 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18552
18553         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18554
18555 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18556
18557         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18558         of platforms.
18559
18560 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18561
18562         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18563         objects.cs.
18564
18565         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18566         
18567         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18568 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18569
18570         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18571         single precision before storing to a single precision location.
18572
18573 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18574
18575         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18576
18577 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18578
18579         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18580         correct files.
18581
18582         * basic.cs: Remove test_0_byte_compares test which was moved to
18583         objects.cs a long time ago.
18584
18585 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18586
18587         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18588
18589 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18590
18591         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18592         handlers are called.
18593
18594         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18595         throwing code.
18596
18597          * mini-ia64.c: Add support for the throw->branch exception 
18598         optimization.   
18599
18600         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18601
18602 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18603
18604         * mini.c: Enabled "fastpath" deadce :-)
18605         
18606 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18607
18608         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18609         alias analysis pass to support it.
18610         * mini.h: Likewise.
18611         * ssa.c: Likewise.
18612         * liveness.c: Likewise (liveness computation can use aliasing
18613         information to be more accurate).
18614         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18615         moreover made so that "--compile-all" uses the given optimization
18616         flags and not the default ones.
18617         * aliasing.c: Alias analysis (new file).
18618         * aliasing.h: Likewise.
18619         * Makefile.am: added "aliasing.c" and "aliasing.h".
18620         
18621 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18622
18623         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18624         OP_L opcodes.
18625
18626 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18627
18628         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18629         fp >= end_of_stack exit condition, as it is not needed, and it might
18630         become true for fp eliminated frames.
18631
18632 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18633
18634         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18635         coded offsets.
18636
18637 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18638
18639         * mini-arm.c: fixed alignment of doubles/longs to match
18640         the C ABI (bug #76635).
18641
18642 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18643
18644         * aot.c: fix compilation with --enable-minimal=aot.
18645
18646 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18647
18648         * mini-arm.c: fixed compatibility with the new
18649         floating point emulator package for compares.
18650
18651 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18652
18653         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18654
18655 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18656
18657         * mini-exceptions.c (print_stack_frame): Output to stderr.
18658         (mono_handle_native_sigsegv): Ditto.
18659
18660 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18661
18662         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18663         OP_LCONV_TO_OVF_I implementation.
18664
18665         * mini-amd64.c: Add support for the throw->branch exception 
18666         optimization.
18667
18668         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18669         when the catch clause catches a more general exception, i.e. Object.
18670
18671 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18672
18673         * cpu-ia64.md: Remove unused opcodes.
18674
18675         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18676         specific defines for architectures defining USE_SIGACTION.
18677
18678         * mini-ia64.c: Fix some warnings.
18679
18680         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18681         version seemed to skip a frame.
18682
18683 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18684
18685         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18686         only calls which are made to native code use this flag.
18687
18688 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18689
18690         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18691         varargs methods as well.
18692         
18693         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18694         which have save_lmf set. Reorganize methods prologs a bit.
18695
18696         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18697         debugger to the proper place.
18698
18699 2005-10-29  Martin Baulig  <martin@ximian.com>
18700
18701         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18702         when running inside the debugger until the debugger has support
18703         for it.
18704
18705 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18706
18707         * mini.h: Fix a warning.
18708
18709 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18710
18711         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18712         we expose publicly, this returns the string.
18713
18714 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18715
18716         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18717         with fp elimination.
18718
18719 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18720
18721         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18722         native stacktrace using the glibc 'backtrace' function if available.
18723
18724 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18725
18726         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18727
18728         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18729         handle SIGSEGVs received while in native code.
18730
18731         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18732         code, call mono_handle_native_sigsegv which will abort the runtime
18733         after printing some diagnostics, instead of converting it into a
18734         confusing NullReferenceException.
18735
18736 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18737
18738         * cpu-pentium.md: Remove unused opcodes.
18739
18740 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18741
18742         * mini-amd64.h (MonoLMF): Add rsp field.
18743
18744         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18745         the lmf too.
18746
18747 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18748
18749         * mini-codegen.c (get_register_spilling): Fix some warnings.
18750
18751 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18752
18753         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18754         elimination during exception handling. Enable fp elimination by
18755         default.
18756
18757         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18758         elimination.
18759
18760 2005-10-16  Martin Baulig  <martin@ximian.com>
18761
18762         * mini-exceptions.c
18763         (mono_debugger_run_finally): New public method for the debugger.
18764
18765 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18766
18767         * debug-mini.c (mono_debug_init_method): Fix warning.
18768
18769         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18770         the 'exname' parameter const to fix some warnings.
18771
18772 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18773
18774         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18775         introduced by the previous patch.
18776
18777 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18778
18779         * basic-float.cs: Add test for precision of float arithmetic.
18780
18781         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18782         when loading/storing single values from/to memory.
18783
18784         * mini.c (mono_jit_compile_method_with_opt): Create the function
18785         pointers in the correct domain.
18786
18787 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18788
18789         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18790         introduced by previous patch.
18791         
18792         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18793         when out_filter_idx is NULL.
18794
18795         * mini-exceptions.c: Don't run filter clauses twice during exception
18796         handling. Fixes #75755.
18797
18798 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18799
18800         * aot.c: Add support for ldflda wrappers.
18801
18802         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18803         #75902.
18804
18805 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18806
18807         * mini.c, mini.h: do not consider exception handlers blocks when
18808         setting up interface variables.
18809
18810 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18811
18812         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18813
18814 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18815
18816         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18817         causes a regression.
18818
18819         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18820
18821 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18822
18823         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18824         of the OP_P definitions.
18825
18826         * TODO: Add a proposal for dealing with the CEE/OP mess.
18827
18828         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18829         optimizations from the x86 port.
18830
18831         * cpu-amd64.md: Ditto.
18832
18833         * basic.cs basic-long.cs: Add tests.
18834
18835 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18836
18837         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18838         Patrik Torstensson's implementation of my exception-handling
18839         optimization idea, when the exception object is not used
18840         (bug #62150).
18841
18842 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18843
18844         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18845         of the mul_imm optimizations from the old jit.
18846
18847 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18848
18849         * mini.c, liveness.c: patch by Patrik Torstensson and
18850         Zoltan Varga to improve performance in methods with
18851         exception clauses.
18852
18853 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18854
18855         * driver.c: Remove 'Globalization' entry from --version.
18856
18857 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18858
18859         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18860         there is a profiler interested in JIT events.
18861
18862         * aot.c: Load profile files produced by the AOT profiling module, and
18863         reorder methods based on the profiling info. Add a 'method_order' table
18864         to the AOT file to make mono_aot_find_jit_info work with the reordered
18865         methods.
18866
18867         * mini.h: Bump AOT file version info.
18868
18869 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18870
18871         * mini-arm.h: work around what looks like a gcc bug when optimizations
18872         are enabled.
18873
18874 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18875
18876         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18877         conditionals.  Use ...
18878         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18879
18880 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18881
18882         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18883         to determine the amount of memory to copy when passing valuetypes.
18884
18885         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18886         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18887
18888 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18889
18890         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18891         information about aot.
18892
18893 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18894
18895         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18896         macros. This will allow a deadlock debugger to easily be plugged
18897         in.
18898
18899 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18900
18901         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18902
18903 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18904
18905         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18906         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18907         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18908         ($(arch_built)) [CROSS_COMPILING]: Error out.
18909
18910 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18911
18912         * aot.c: Add support for the no_special_static flag for classes.
18913
18914 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18915
18916         * Reapply reverted patches.
18917
18918         * *: Revert r50174 as well.
18919
18920         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18921
18922 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18923
18924         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18925
18926 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18927
18928         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18929         part of the SIG_HANDLER_SIGNATURE.  
18930
18931 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18932
18933         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18934         statistics.
18935
18936         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18937         introduced by previous patch.
18938
18939 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18940
18941         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18942         saved registers too.
18943
18944         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18945         upon the information returned by get_call_info ().
18946         
18947         * mini-x86.c (add_float): Fix stack size calculation.
18948         (mono_arch_call_opcode): Rewrite this so it works based up the
18949         information returned by get_call_info ().
18950         (mono_arch_get_this_vret_args): Ditto.
18951
18952 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18953
18954         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18955         in cinfo to determine the registers which need to be used.
18956
18957 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18958
18959         * driver.c (mono_main): Add --server and --desktop flags. 
18960
18961 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18962
18963         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18964         registers as global registers.
18965
18966         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18967         longer needed with the new register allocator.
18968
18969         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18970
18971         * cpu-ia64.md: Remove unused opcodes.
18972         
18973         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18974         
18975 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18976
18977         * cpu-amd64.md: Remove unused opcodes.
18978
18979         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18980         needed with the new register allocator.
18981
18982         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18983         reg-reg moves.
18984
18985 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18986
18987         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18988
18989 2005-09-16  Martin Baulig  <martin@ximian.com>
18990
18991         * exceptions-amd64.c
18992         (throw_exception): Don't call mono_debugger_throw_exception() if
18993         we're a rethrow - see the FIXME in the code.
18994
18995 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18996
18997         * mini.c (mono_init_exceptions): This only works on some architectures.
18998         
18999 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19000
19001         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19002         on ia64.
19003
19004         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19005
19006         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19007         now in mini-exceptions.c.
19008
19009 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19010
19011         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19012         now in mini-exceptions.c.
19013
19014 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19015
19016         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19017         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19018
19019         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19020         code into mini-exceptions.c. Add some assertions to it.
19021
19022 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19023
19024         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19025         (<software@solmersa.com>). Fix as errors on windows.
19026
19027 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19028
19029         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19030         method info into the LMF.
19031
19032 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19033         
19034         * mini-ia64.c: Add proper unwind info for method epilogs.
19035
19036         * exceptions-ia64.c: Add some code to help debugging.
19037         
19038         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19039
19040         * mini-exceptions.c: Fix warning.
19041
19042 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19043
19044         * mini.c: Really fix build.
19045
19046         * mini-x86.c mini-amd64.c: Fix build.
19047
19048 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19049
19050         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19051
19052         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19053         some Interlocked methods as intrinsics.
19054
19055         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19056         for Thread methods as well.
19057
19058         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19059
19060         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19061
19062         * mini-ia64.c mini-x86.c mini-amd64.c 
19063         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19064         OP_MEMORY_BARRIER.
19065         
19066         * mini.c (mono_init_exceptions): Fix build breakage.
19067
19068 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19069
19070         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19071         of instructions. Use the new ia64_unw_op macros for emitting unwind
19072         info.
19073
19074         * mini.c (mono_init_exceptions): Initialize exception handling
19075         related trampolines at startup.
19076
19077 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19078
19079         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19080
19081 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19082
19083         * mini.c: Handle type loading errors gracefully during compilation and
19084         throw the appropriate exception.
19085
19086 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19087
19088         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19089         for the mono binary.
19090
19091 2005-09-09  Martin Baulig  <martin@ximian.com>
19092
19093         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19094         the release.
19095
19096 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19097
19098         * mini-arm.h: use emulation for conv.r.un for the release.
19099
19100 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19101
19102         * mini-arm.c, objects.cs: more fixes and tests for them.
19103
19104 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19105
19106         * mini-arm.c: align structures to at least 4 bytes to be able
19107         to keep our current optimized memcpy.
19108
19109 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19110
19111         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19112
19113 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19114
19115         * mini.c: ignore SIGPIPE.
19116
19117 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19118
19119         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19120
19121         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19122
19123 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19124
19125         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19126
19127 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19128
19129         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19130         exception handling support.
19131         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19132         patch by Brian Koropoff <briank@marakicorp.com>).
19133
19134 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19135
19136         * mini.c: revert another 'optimization' which breaks when
19137         items on the eval stack need to be saved at a basic block end
19138         (bug #75940).
19139
19140 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19141
19142         * jit-icalls.c: for arrays, ensure we always provide
19143         lower bounds.
19144
19145 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19146
19147         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19148         
19149         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19150
19151 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19152
19153         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19154         arguments in their original register.
19155
19156 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19157
19158         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19159         memset/memcpy.
19160
19161         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19162         when ssapre is enabled.
19163
19164         * inssel-long.brg: Fix bug in previous patch.
19165
19166         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19167         multiplication by a constant.
19168
19169 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19170
19171         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19172         icc.
19173
19174         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19175         saving registers.
19176
19177 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19178
19179         * inssel-arm.brg: apply changes tested by Brian Koropoff
19180         <briank@marakicorp.com>.
19181
19182 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19183
19184         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19185         
19186 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19187
19188         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19189         to the same register if dreg is just a base register.
19190         (print_ins): Improve printing of membase opcodes.
19191
19192         * inssel-x86.brg: Add optimized ldind(reg) rules.
19193
19194         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19195
19196 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19197
19198         * mini.c: when running under valgrind, set the stack bottom for
19199         the GC at the actual approximate stack for the app (fixes running
19200         mono with valgrind).
19201
19202 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19203
19204         * mini.c: do no break at the first valuetype to init found
19205         (fixes bug #75791).
19206
19207 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19208
19209         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19210
19211 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19212
19213         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19214
19215 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19216
19217         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19218
19219 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19220
19221         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19222
19223         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19224         code.
19225
19226         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19227         code.
19228
19229         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19230         methods.
19231
19232 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19233
19234         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19235
19236 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19237
19238         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19239         in the tail recursion optimization.
19240
19241         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19242         debug info into the assembly file.
19243
19244         * iltests.il: Add test for filter regions.
19245
19246         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19247         initial stack of filter regions. Fixes #75755.
19248
19249 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19250
19251         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19252         stack requirements.
19253
19254 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19255
19256         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19257         the check for an already compiled method on non-ia64 platforms.
19258         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19259         proper domain.
19260
19261         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19262
19263         * inssel-x86.brg: Add some optimized call rules.
19264
19265 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19266
19267         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19268         method here.
19269
19270         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19271         mono_arch_patch_delegate_trampoline.
19272
19273         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19274
19275         * mini-trampolines.c: Fix build.
19276
19277         * mini-amd64.h: Add delegate trampolines.
19278
19279         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19280
19281         * inssel-amd64.brg: Add optimized call rules.
19282         
19283         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19284
19285         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19286
19287 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19288
19289         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19290         change.
19291
19292         * mini-ia64.c: Remove LMF fixmes.
19293
19294         * mini-ia64.h: Remove most fields from LMF.
19295
19296         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19297
19298         * mini-trampolines.c: Add support for IA64 function descriptors.
19299
19300         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19301         for IA64 function descriptors.
19302
19303 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19304
19305         * tramp-arm.c: patch the vtable for virtual calls. Added
19306         support code to register/unregister the LMF.
19307         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19308         more LMF work.
19309
19310 2005-08-19  Dick Porter  <dick@ximian.com>
19311
19312         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19313         bit value if needed.
19314
19315 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * mini.c (mini_get_method): Move handling of wrapper data here.
19318
19319         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19320
19321         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19322         virtual.
19323
19324         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19325         bblock->code does not remain empty.
19326
19327 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * arrays.cs: Add regression test for #75832.
19330
19331         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19332         rules. Fixes #75832.
19333
19334         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19335         instruction scheduling.
19336
19337 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19338
19339         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19340
19341 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19344
19345         * mini-codegen.c: Fix VC build.
19346
19347         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19348
19349 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19350
19351         * mini.h: fix signature for mono_register_opcode_emulation.
19352
19353 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19354
19355         * mini.c: Get rid of most of the helper_sig_... constants using
19356         mono_create_icall_signature ().
19357
19358 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19359
19360         * jit-icalls.c (helper_ldstr): New helper function.
19361
19362         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19363
19364         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19365         throw, load the string using a helper call instead of creating a string object.
19366
19367         * aot.c: Update after LDSTR changes.
19368
19369         * mini.h: Bump AOT file version.
19370         
19371         * aot.c: Save class size info into the AOT file. Print more statistics during
19372         compilation.
19373
19374         * mini.h: Bump AOT file version.
19375
19376         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19377         ordering of disasm cases. Fixes #74957.
19378
19379 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19380
19381         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19382         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19383         the generic code needed for the ARM port.
19384
19385 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19386
19387         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19388         inssel-arm.brg: more ARM features and fixes.
19389
19390 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19391
19392         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19393         ARM port work in progress.
19394
19395 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19396
19397         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19398
19399         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19400
19401         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19402
19403         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19404
19405         * *-ia64.*: Ongoing IA64 work.
19406         
19407         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19408
19409 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19410
19411         * TODO: Remove out-of-data todo stuff.
19412
19413         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19414         dead code.
19415
19416         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19417
19418         * mini.h: Bump corlib version.
19419
19420 2005-07-27  Martin Baulig  <martin@ximian.com>
19421
19422         * mini-codegen.c
19423         (create_copy_ins): Added `const unsigned char *ip' argument; set
19424         `copy->cil_code' from it.
19425
19426 2005-07-27  Martin Baulig  <martin@ximian.com>
19427
19428         * mini-exceptions.c (mono_handle_exception): Don't call
19429         mono_debugger_handle_exception() for filters.
19430
19431 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19432
19433         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19434         as well.
19435
19436 2005-07-26  Martin Baulig  <martin@ximian.com>
19437
19438         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19439
19440         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19441         helper_compile_generic_method() if the method is actually virtual
19442         and non-final.
19443
19444 2005-07-26  Martin Baulig  <martin@ximian.com>
19445
19446         * mini.c
19447         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19448         public; this is now accessed directly by the debugger.
19449         (mono_generic_trampoline_code): Removed.
19450
19451         * debug-mini.c
19452         (mono_debug_init_method): Also add interncalls and wrappers.
19453
19454 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19455
19456         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19457
19458 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19461
19462 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19463
19464         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19465
19466 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19467
19468         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19469         getting TLS offsets on AMD64 too.
19470
19471 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19472
19473         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19474
19475 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19476
19477         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19478         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19479
19480 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19481
19482         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19483
19484         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19485         to mini.c.
19486
19487         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19488         mono_sparc_is_virtual_call ().
19489         
19490         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19491
19492         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19493         trampoline parameters.
19494
19495         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19496         
19497         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19498         to mono_arch_get_vcall_slot_addr.
19499
19500         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19501         trampoline code.
19502
19503         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19504
19505 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19506
19507         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19508
19509 2005-07-19  Martin Baulig  <martin@ximian.com>
19510
19511         * exceptions-amd64.c (throw_exception): Call
19512         mono_debugger_throw_exception() here like we're doing it on i386.
19513
19514 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19515
19516         * mini-ia64.c: Add optimized TLS access support.
19517
19518 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19519
19520         * mini-exceptions.c: Ongoing IA64 work.
19521
19522         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19523
19524         * mini.c: Use the default optimization set when embedding. Fixes
19525         #75194.
19526
19527 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19528
19529         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19530         of trampolines to a separate file.
19531
19532         * mini-trampolines.c: New file.
19533
19534         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19535         separate file.
19536         
19537         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19538         amd64/ia64 code.
19539
19540         * mini-codegen.c: Fix cygwin build.
19541
19542 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19543
19544         * mini.c: Add some minor changes needed by the IA64 port.
19545
19546         * *-ia64.*: Ongoing IA64 work.
19547
19548 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19551         trampolines into arch-independent and arch-dependent parts.
19552
19553         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19554
19555 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19558
19559         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19560         the xp-regalloc-branch for amd64.
19561
19562         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19563         xp-regalloc-branch for x86.
19564
19565 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19566
19567         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19568
19569 2005-07-06  Martin Baulig  <martin@ximian.com>
19570
19571         * mini.c
19572         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19573         (mono_jit_runtime_invoke): Likewise.
19574
19575 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19578         on x86 too.
19579         
19580         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19581         without loading their metadata. Reorganize the file format so exception handling+
19582         debug info is kept separate from normal method info. Create MonoJitInfo 
19583         structures for methods lazily.
19584
19585         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19586         loading metadata.
19587         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19588
19589         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19590
19591         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19592         in AOT code.
19593
19594         * mini.h: Bump AOT file version.
19595
19596 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19597
19598         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19599
19600 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19601
19602         * Makefile.am (check-local): Call semdel-wrapper.
19603
19604 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19605
19606         * mini-x86.c: Revert the last change as it seems to break the build..
19607
19608 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19609
19610         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19611         
19612         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19613
19614 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19615
19616         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19617         outside of the macro, so strange stuff doesn't happen with gcc4
19618         (NEW_AOTCONST_TOKEN): Likewise.
19619
19620 2005-06-28  Martin Baulig  <martin@ximian.com>
19621
19622         * mini.c (mini_class_is_system_array): New static method; use this
19623         instead of `klass->parent == mono_defaults.array_class' everywhere
19624         since this also works for the new generic array class.
19625
19626 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19627
19628         * inssel.brg: Remove warnings.
19629
19630 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19631
19632         * mini-ia64.c: Ongoing IA64 work.
19633
19634         * basic-float.cs: Add float->i1 conversion test.
19635
19636         * iltests.il: Add conv.u4 test.
19637
19638 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19639
19640         * inssel-long.brg: Fix bug caused by last change.
19641
19642 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19643
19644         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19645         BSDs.  Allows the x86 JIT to work on OSX86
19646
19647 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19648
19649         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19650         u4->i8 conversion.
19651
19652         * mini-ia64.c: Ongoing IA64 work.
19653
19654 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19655
19656         * mini-ia64.c: Ongoing IA64 work.
19657
19658         * driver.c: Clean up jit_code_hash as well when using --regression.
19659
19660         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19661
19662         * basic-long.cs: Add tests for long->u4 conversion.
19663
19664 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19665
19666         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19667         that we do not depend on undefined C behavior: the order stuff
19668         gets evaluated within an expression. Fixes mono when compiled on
19669         GCC 4.
19670
19671 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19672
19673         * *-ia64.*: Ongoing IA64 work.
19674
19675         * aot.c: Lower memory usage while loading AOT methods.
19676
19677         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19678
19679         * mini.h: Bump AOT file format version.
19680
19681 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19682
19683         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19684
19685 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19686
19687         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19688         not on callee assembly). Fixed some comments.
19689
19690 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19691
19692         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19693         it gets proper disassembly.
19694         (emit_method_info): Remove some dead code.
19695
19696         * mini.c (mini_method_compile): Allways allocate the GOT var in
19697         mono_method_to_ir for emulating opcodes.
19698
19699 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19700
19701         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19702         before freeing the code memory. Fixes #74990.
19703
19704         * objects.cs: Add regression test for #74992.
19705
19706         * liveness.c: Extend live ranges of arguments to the beginning of the
19707         method. Fixes #74992.
19708
19709         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19710         so it points into the faulting instruction.
19711
19712 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19713
19714         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19715
19716         * *-ia64.*: Ongoing IA64 work.
19717
19718         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19719
19720 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19721
19722         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19723
19724         * *-ia64.*: Ongoing IA64 work.
19725
19726 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * basic-long.cs: Add tests for add/sub.ovf.
19729
19730         * basic.cs: Add tests for sub.ovf.
19731
19732         * *-ia64.*: Ongoing IA64 work.
19733
19734 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19735
19736         * *-ia64.*: Ongoing IA64 work.
19737
19738         * basic.cs: Add conv.ovf.i4.un test.
19739
19740 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19741
19742         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19743         
19744 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19745
19746         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19747
19748 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19749
19750         * *-ia64.*: Ongoing IA64 work.
19751
19752 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19753
19754         * trace.[ch]:
19755         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19756
19757 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19760
19761 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19762
19763         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19764
19765         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19766         of a call is callable by a near call.
19767
19768 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19769
19770         * mini-ia64.c: Ongoing IA64 work.
19771
19772 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19773
19774         * genmdesc.c: Make the generated array non-static.
19775
19776         * inssel-long.brg: Fix LSHR_IMM rule.
19777
19778         * *-ia64.*: Ongoing IA64 work.
19779
19780         * *-ia64.*: Ongoing IA64 work.
19781
19782 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19783
19784         * *-ia64.*: Ongoing IA64 work.
19785
19786         * *-ia64.*: Ongoing IA64 work.
19787         
19788         * mini-ia64.c: Ongoing IA64 work.
19789
19790         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19791
19792 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19793
19794         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19795         
19796         * objects.cs basic-long.cs: Move some tests to objects.cs.
19797
19798 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19799
19800         * *-ia64.*: Ongoing IA64 work.
19801
19802         * iltests.il: Add a new test.
19803
19804         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19805         newobj. Fixes #75042.
19806
19807 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19808
19809         * *-ia64.*: Ongoing IA64 work.
19810         
19811         * *-ia64.*: Ongoing IA64 work.
19812         
19813         * *-ia64.*: Ongoing IA64 work.
19814
19815         * basic.cs objects.cs: Move tests accessing static variables as well.
19816
19817         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19818
19819 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19820
19821         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19822
19823         * driver.c: Always print failed tests.
19824
19825         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19826         frame pointer.
19827
19828         * *ia64*: Ongoing IA64 work.
19829
19830 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19831
19832         * basic.cs: Add tests for add.ovf. Fix warnings.
19833
19834 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19835
19836         * driver.c (mono_main): Avoid crash if no argument is passed to
19837         --break;  Do not use g_error, but f_printf.   And fix all other
19838         ocurrences of the same crash.
19839
19840 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19843         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19844         Fixes #74742.
19845
19846 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * *-ia64.*: Add beginnings of IA64 backend.
19849
19850         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19851
19852 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19855         Fixes #74925.
19856
19857         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19858
19859         * mini-amd64.c: Fix a warning.
19860
19861 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19864         in float_neg. Fixes #74897.
19865
19866         * mini-amd64.c (emit_call): Fix another near call bug.
19867
19868 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19869
19870         * declsec.c: Keep the appdomain information in the structure. Added a 
19871         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19872         value gets overwritten).
19873         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19874         an MonoAppDomain member to MonoSecurityFrame.
19875         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19876         used in the stack walk. Now use a MonoArray which grow (double) when
19877         it gets full.
19878
19879 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19880
19881         * mini.c: Re-enabled runtime cleanup, since running threads should
19882         now properly stop when exiting.
19883
19884 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * mini-codegen.c: New file contaning the arch-independent local
19887         register allocator. Not used by any architectures yet.
19888
19889         * mini.h linear-scan.c: Merge some changes from the 
19890         mini-xp-local-regalloc branch.
19891
19892 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19893
19894         * mini-amd64.c (emit_call): Fix calls to native functions when the
19895         runtime is compiled as a shared library. Fixes #74756.
19896
19897         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19898         on a literal field. Fixes #74751.
19899
19900 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19901
19902         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19903
19904 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19905
19906         * objects.cs: Add missing null casting test.
19907
19908 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19909
19910         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19911         in wrapper methods. Also rename 'address' variable to 'offset'.
19912
19913 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19916         warnings.
19917         
19918         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19919
19920         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19921         work on windows.
19922
19923 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19924
19925         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19926
19927 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19928
19929         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19930         just the last bytes.
19931
19932 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19933
19934         * aot.c (mono_compile_assembly): Fix warning.
19935
19936         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19937         by the _MSC_VER stuff.
19938
19939 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19940
19941         * inssel-long.brg: Fix #74588.
19942
19943         * cpu-amd64.md: Fix #74591.
19944
19945         * iltests.il: Add new regression tests.
19946
19947 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19948
19949         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19950         valuetype.
19951
19952 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19953
19954         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19955
19956         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19957         from Bill Middleton <flashdict@gmail.com>.
19958
19959 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * arrays.cs: Add new regression test. Fix warnings.
19962
19963 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19966         and leakage in CKFINITE.
19967
19968         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19969         this to a null op since it is called on amd64 too.
19970
19971         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19972
19973         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19974         body since this is not used on amd64.
19975         
19976         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19977
19978         * mini-amd64.c: Remove obsolete fixmes.
19979
19980         * mini.c (print_method_from_ip): Fix debugging support.
19981
19982 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19983
19984         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19985         so that expressions that don't give much gain are not reduced.
19986         * ssapre.h: Likewise.
19987
19988 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19989
19990         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19991
19992         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19993
19994         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19995
19996 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19997
19998         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19999
20000         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20001
20002 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20003
20004         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20005         stack touching.
20006
20007         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20008
20009         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20010
20011         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20012
20013         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20014         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20015
20016         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20017
20018         * mini-x86.c: Fix up stack overflow handling.   
20019
20020         * exceptions.cs: Add new regression test.
20021
20022 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20023
20024         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20025         mono_jit_thread_attach.
20026
20027         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20028
20029 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20030
20031         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20032         avoid calling constructors using callvirt.
20033
20034         * inssel.brg: Fix #74073.
20035
20036 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20037
20038         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20039         compilation with non-GCC compilers.
20040         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20041         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20042
20043 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20044
20045         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20046         klass->interface_offsets (will likely fix bug#74073).
20047
20048 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20049
20050         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20051
20052 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20053
20054         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20055         to amd64_div_reg_size ().
20056         
20057         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20058
20059 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20060
20061         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20062
20063 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20066
20067 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20070         
20071         * mini.c (mono_precompile_assembly): Load and precompile referenced
20072         assemblies as well. Fixes #74015.
20073
20074 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20075
20076         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20077
20078 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20079
20080         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20081         a lot of checks and (anyway) permissions cannot work until corlib is 
20082         loaded.
20083
20084 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20085
20086         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20087
20088 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20089
20090         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20091         calls (fixes bug#72824).
20092
20093 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20094
20095         * mini.c: fix tail recursion elimination (see test in bug#73936).
20096
20097 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20100         some fp functions in sse2 mode.
20101
20102 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20103
20104         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20105
20106 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * mini.h mini.c: Add mono_get_jit_tls_key ().
20109
20110         * mini-x86.c: Enable fast TLS support on windows.
20111
20112 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20113
20114         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20115         * mini.c: Check for p/invoke method when generating code. If a
20116         p/invoke method, or it's class, isn't decorated with [Suppress
20117         UnmanagedCodeSecurity] then generate code to call System.Security.
20118         UnmanagedDemand (only if the security manager is active).
20119
20120 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20123         last change as it seems to cause strange crashes.
20124         
20125 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20126
20127         * *.c: handle unsafe function pointers where needed.
20128
20129 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * mini.c (mono_jit_free_method): Remove the fixme too.
20132
20133 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20134
20135         * mini.c: As discussed, make the code actually free the delegate
20136         thunk now, to enable the debugging of delegate problems, use
20137         MONO_DEBUG=1 when running Mono. 
20138
20139         This takes also care of parts of the leaks as seen by Joe.
20140
20141 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20142
20143         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20144         thread_tls_offset calculation.
20145
20146 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20147
20148         * declsec.c: Reworked linkdemand checks for icall. The previous code
20149         was using the declaration code (untrusted) and didn't work as expected
20150         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20151         specific case.
20152
20153 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20154
20155         * iltests.il: Add new localloc test.
20156
20157         * mini-amd64.c: Handle large stack allocations the same way as on
20158         windows if stack overflow handling is working.
20159         
20160         * mini-amd64.c: Allocate the signal stack using mmap.
20161
20162         * mini.c (sigsegv_signal_handler): Fix reading of context.
20163
20164         * mini-exceptions.c: Fix up stack overflow handling.
20165
20166         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20167
20168         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20169
20170         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20171
20172         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20173
20174         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20175         tramp_init functions as they are no longer needed.
20176
20177 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20178
20179         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20180         
20181         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20182
20183         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20184         
20185         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20186         support that now.
20187
20188         * mini-ops.h: Add OP_LMUL_IMM.
20189
20190         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20191         long mul/div opcodes as intrinsic.
20192
20193         * mini-amd64.c (emit_call): Handle the case when the callee might be
20194         an AOT method.
20195
20196 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20197
20198         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20199         extra safe.
20200         
20201         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20202
20203         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20204
20205 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20206
20207         * mini.c (mono_codegen): Don't leak here, to help people running
20208         monogrind.
20209
20210 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20211
20212         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20213         conversions in sse2 mode.
20214
20215         * basic-float.cs: Add regression test.
20216         
20217         * mini-amd64.c: Reenable sse2.
20218
20219 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20220
20221         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20222
20223 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20224
20225         * driver.c: Copyright text should include 2005.
20226         
20227 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20228
20229         * cpu-amd64.md (load_membase): Fix more max lengths.
20230
20231 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * cpu-amd64.md (load_membase): Fix max length.
20234
20235         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20236
20237         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20238
20239         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20240         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20241
20242         * basic-float.cs: Add rounding regression test.
20243
20244         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20245
20246 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20247
20248         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20249         structures in registers for pinvoke wrappers.
20250
20251 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20252
20253         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20254
20255 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20256
20257         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20258         wrapper to mono_jit_thread_attach.
20259
20260         * mini.c (mini_jit_thread_attach): New jit icall.
20261
20262         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20263         native->managed wrappers.
20264
20265         * exceptions.cs: Add new regression test.
20266
20267         * mini.c (optimize_branches): Check regions in the cbranch to throw
20268         block case as well. Fixes #73242.
20269
20270 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20271
20272         * mini.c: thread safety fixes.
20273
20274 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20275
20276         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20277         patching stuff, since delegates use jump trampolines so there is
20278         no caller.
20279
20280         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20281         jump trampolines.
20282         
20283         * tramp-amd64.c: Fix build.
20284
20285         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20286         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20287
20288         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20289         Rename this to mono_arch....
20290         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20291
20292         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20293
20294         * mini-amd64.c (emit_call): If both the caller and the callee is
20295         guaranteed to have 32 bit addresses, emit a normal call.
20296
20297         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20298
20299         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20300         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20301         method_ptr inside delegates.
20302
20303 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20304
20305         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20306         invalidated. Fixes #73001.
20307
20308         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20309
20310         * mini-x86.c: Only use stdcall for pinvokes on windows.
20311
20312 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20313
20314         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20315         * mini-x86.c: remove unreliable __thread var offset detection,
20316         use the correct accessors and enable by default.
20317
20318 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20319
20320         * mini.c (mono_jit_free_method): Fix memory leak.
20321
20322 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20323
20324         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20325
20326 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20327
20328         * cpu-amd64.md: Fix lengths of atomic opcodes.
20329
20330 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20331
20332         * driver.c: try to not imply using ICU is any good.
20333
20334 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20335
20336         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20337         functions as inline ops.
20338
20339         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20340         some Interlocked functions as inline ops.
20341
20342         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20343
20344         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20345
20346         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20347
20348         * mini.c: Add support for OP_NOT_TAKEN.
20349
20350         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20351         structures in registers for pinvoke wrappers.
20352
20353         * mini-amd64.c: Fix warnings.
20354
20355 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20356
20357         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20358
20359         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20360
20361         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20362         address instead of loading the address from it.
20363
20364         * mini-x86.c: Add support for returning small structs in registers
20365         on Win32. Fixes part of #70864.
20366         
20367 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20368
20369         * trace.c (get_token): Improve error checking.
20370
20371 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20372
20373         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20374
20375 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20376  
20377         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20378         it can be reused for MonoClass.
20379         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20380         _LINKDEMAND.
20381
20382 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20383
20384         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20385         instead of a MonoReflectionMethod. The method information wasn't used
20386         when displaying SecurityException details (but will be now).
20387
20388 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20389
20390         * Makefile.am : windows build fix.
20391
20392 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20393
20394         * iltests.il: Add new regression test.
20395
20396         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20397         #72522.
20398
20399 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20400  
20401         * mini.c: Moved linkdemand check into helper function check_linkdemand
20402         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20403         LDFTN, LDVIRTFTN).
20404
20405 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20406
20407         * declsec.c: Added statistics counter for different kinds of 
20408         LinkDemands.
20409         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20410         (and commented) declaration.
20411         * mini.c: Added statistics counter for security Demand code 
20412         generation. Added display of security statistics.
20413
20414 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20415
20416         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20417         Fix compilation errors under gcc-2.95.
20418
20419 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20420
20421         * mini.c, driver.c: Use the new jit trampoline hashtable
20422
20423 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20424
20425         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20426
20427 2005-02-11  Martin Baulig  <martin@ximian.com>
20428
20429         * debug-mini.c (mono_debug_close_method): Free the line number array.
20430
20431 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20432
20433         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20434         icalls.
20435
20436         * mini.h: Bump AOT file format version. 
20437
20438 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20439
20440         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20441         APTC and P/Invoke.
20442         * declsec.h: Added macros to get/set lazyly initialized security 
20443         informations about assemblies. Added new enum for different type of
20444         possible LinkDemand violation. Added function to check LinkDemands.
20445         * mini.h: Added a field to MonoCompile to hold any security violation
20446         detected when JITting a method (so it can be thrown later).
20447         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20448         and CEE_CALLVIRT. Added code to throw exception at the end of
20449         mini_method_compile (note: the exception is unhandled right now).
20450
20451 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20452
20453         * mini.c, jit-icalls.c: use the managed implementation of
20454         memset for initobj and memset, to avoid managed <-> unmanaged
20455         transitions.
20456
20457 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20458
20459         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20460         optimization if it would need a GOT var.
20461
20462         * basic.cs: Add tests for constant propagation and switch statements.
20463
20464         * ssa.c: Fix out-of-range constant propagation and switch statements.
20465
20466 2005-02-09    <vargaz@freemail.hu>
20467
20468         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20469
20470 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20471
20472         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20473
20474 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20475
20476         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20477
20478 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20479
20480         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20481         arithmetic operations.
20482
20483 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20484
20485         * mini-ppc.c: add a workaround for broken user code that
20486         DllImports vararg functions with non-vararg signatures.
20487
20488 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20489
20490         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20491         meaningfull error message for assemblies written in Managed C++.
20492
20493         * tramp-amd64.c mini-amd64.h: Add support for 
20494         create_trampoline_from_token ().
20495
20496         * aot.c mini-x86.c abcremoval.c: Applied patch from
20497         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20498
20499 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20500
20501         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20502         which takes a MonoImage/token as parameter instead of a MonoMethod.
20503
20504         * aot.c: Use the new trampoline for initializing vtables.
20505
20506         * aot.c: Add support for ldfld/stfld_remote wrappers.
20507
20508         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20509         rules for compare <MEM>, IMM.
20510
20511         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20512
20513         * aot.c: Handle inherited finalizers correctly.
20514
20515 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20516
20517         * inssel.brg (stmt): Add a missing _setup_... ().
20518
20519         * aot.c: Save some parts of the class state to the AOT file and use it
20520         to recompute that state when a class is initialized.
20521
20522         * mini.c: Install AOT hooks into the runtime.
20523
20524         * mini.h: Bump AOT file format version.
20525         
20526         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20527         Fixes #72148.
20528
20529         * iltests.il: Add new test.
20530
20531 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20532
20533         * mini.c: fix typo.
20534
20535 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20536
20537         * mini.c: setup the statistical profiler in the thread attach
20538         callback to cope with the new single thread code.
20539
20540 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20541
20542         * mini-ppc.c: ensure we have enough room for the profiler
20543         calls (fixed bug#72084).
20544
20545 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20546
20547         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20548         it.
20549
20550 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20551
20552         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20553
20554 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20555
20556         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20557         to succesfully execute parrotbench).
20558         * ssapre.h: Likewise.
20559
20560 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20561
20562         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20563         variable for stores to method arguments (fixes a SSAPRE issue).
20564
20565 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20566
20567         * mini.c: handle value types in dup, fixes gen-112.cs.
20568
20569 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20570
20571         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20572         sequence for calls in dynamic methods to avoid thunks.
20573
20574 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20575
20576         * mini.c: correctly remove dynamic methods from the hashtable.
20577
20578 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20579
20580         * driver.c: Disabled SSAPRE until fix the bug that appears
20581         in IronPython's parrotbench.
20582
20583 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20584
20585         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20586
20587         * mini.c (mono_method_to_ir): Revert the previous change.
20588         
20589         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20590         when AOT compiling.
20591
20592         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20593         mono_jit_info_table_find () etc. when running under valgrind.
20594
20595         * inssel.brg: Fix warnings.
20596
20597         * mini-exceptions.c: Fix warnings.
20598
20599 2005-01-31  Martin Baulig  <martin@ximian.com>
20600
20601         * driver.c (compile_all_methods_thread_main): Don't try to compile
20602         generic methods or anything which has type parameters.
20603
20604 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20605
20606         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20607
20608         * TestDriver.cs: Add --verbose flags.
20609
20610         * graph.c ssa.c: Fix 64 bit warnings.
20611         
20612         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20613         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20614         Fix 64 bit warnings.
20615
20616         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20617         variable not spotted by gcc.
20618         
20619         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20620         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20621         X86_COMPARE_MEMBASE opcodes.
20622
20623         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20624
20625 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20626
20627         * *: MonoMethod->signature might be NULL now. You *MUST* use
20628         mono_method_signature.
20629
20630 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20631
20632         * driver.c (compile_all_methods_thread_main): Compile the methods
20633         without invoking cctors.
20634
20635 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20636
20637         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20638         * basic-calls.cs: test for the above.
20639
20640 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20641
20642         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20643         MonoJitInfo changes.
20644
20645 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20646
20647         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20648         eagerly if it contains dynamic methods.
20649         
20650         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20651
20652         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20653         trace, it is now computed by an icall from trace_ips.
20654         
20655         * mini-exceptions.c: Fix a warning.
20656
20657 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20658
20659         * mini-exceptions.c: don't bother getting stack trace info if
20660         it's not going to be used.
20661
20662 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20663
20664         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20665         ssapre-mini-ops.h.
20666
20667 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20668
20669         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20670
20671         * aot.c: Avoid calling mono_method_get_header () if not needed.
20672
20673         * mini.h: Bump AOT file format version.
20674         
20675         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20676
20677         * mini.c (mono_print_tree): Print more info for calls.
20678
20679 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20680
20681         * declsec.h: Remove warning by adding missing include for marshal.h
20682
20683 2005-01-26  Martin Baulig  <martin@ximian.com>
20684
20685         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20686         `ip' twice.
20687
20688 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20689
20690         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20691         flags.
20692
20693         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20694
20695         * aot.c (mono_compile_assembly): Fix a warning.
20696
20697 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20698
20699         * declsec.c: Look for security attributes on the original MonoMethod 
20700         (and not the wrapped one). This fix permissions on icalls.
20701
20702 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20703
20704         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20705
20706         * mini.c (mono_allocate_stack_slots): Add a fixme.
20707
20708         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20709
20710 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20711
20712         * inssel.brg: optimize casts of sealed types (more
20713         optimizations waiting for fixes in remoting).
20714
20715 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20716
20717         * inssel.brg (stmt): Add another dummy rule.
20718
20719         * driver.c: Fix warnings.
20720
20721         * driver.c (mono_main): If running under valgrind, instruct glib to use
20722         the system allocation functions so valgrind can track the memory
20723         allocated by the g_... functions.
20724
20725         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20726
20727         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20728
20729         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20730
20731         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20732         variables in try regions.
20733
20734         * mini.c (mini_method_compile): Don't disable optimizations on large
20735         methods when AOT compiling.
20736
20737         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20738         allocate stack slots. Not yet used.
20739
20740 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20741
20742         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20743
20744 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20745
20746         * mini-ppc.c: make the branch info relative as the code
20747         buffer can be reallocated.
20748
20749 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20750
20751         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20752         * driver.c: Removed the AOT/security restriction. Now initialize the
20753         security manager (in metadata) if --security is used.
20754         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20755         rather than the pointer to declarative security, when AOT is used.
20756
20757 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20758
20759         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20760         basic blocks, reduced intrinsic exception throwing code size.
20761
20762 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20763
20764         * driver.c (mini_usage): Reorder the usage screen.
20765
20766 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20767
20768         * mini.c (mono_resolve_patch_target): Fix warning.
20769
20770 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20771
20772         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20773         previous patch.
20774
20775         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20776
20777         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20778         breaks the amd64 build.
20779
20780         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20781         register allocation. Fixes #71454.
20782
20783         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20784
20785         * arrays.cs: Add new regression test.   
20786
20787 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20788
20789         * ssapre.c: Turned usage of snprintf to GString.
20790         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20791         (I left it on by mistake in my previous commit).
20792
20793 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20794
20795         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20796         on cond branch optimization (fixes bug# 71515).
20797
20798 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20799
20800         * abcremoval.c: Fixed bug 71062.
20801         * abcremoval.h: Likewise.
20802
20803 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20804
20805         * mini.c: Added a new functionality to optimize_branches, the removal
20806         of useless basic blocks, and fixed some problem in the removal of
20807         critical edges; some utility functions added for both purposes.
20808         * ssapre.c: Added complex expression support, and fixed bug 70637.
20809         * ssapre.h: Likewise.
20810         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20811         enabled in SSAPRE.
20812         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20813         * driver.c: Re-enabled SSAPRE.
20814
20815 2005-01-19  Martin Baulig  <martin@ximian.com>
20816
20817         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20818         the result of mono_get_method_constrained().
20819
20820 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20821
20822         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20823         manager.
20824
20825 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20826
20827         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20828         be detected.  Fixes #59296.
20829
20830 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20831
20832         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20833         which can happen. Fixes #71361.
20834
20835 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20836
20837         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20838         manager.
20839
20840 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20841
20842         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20843         appdomain-unload.exe to fail.
20844         
20845         * mini.c: Fix some memory leaks.
20846
20847 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20848
20849         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20850         Fixed bug and sped up some codepaths.
20851
20852 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20853
20854         * mini.c: Fix some memory leaks.
20855
20856         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20857         conversion.
20858
20859         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20860
20861         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20862         #71320.
20863
20864         * iltests.il: Add regression test for #71320.
20865
20866 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20867
20868         * mini.c (mono_codegen): Fix installation of profiler hooks.
20869
20870         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20871
20872 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20873
20874         * mini.h, mini.c, cfold.c: optimize access to enum
20875         readonly fields, too. Eval conditional branches if possible
20876         to perform unreachable code removal in more cases.
20877
20878 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20879
20880         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20881
20882         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20883         code manager.
20884
20885         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20886         WinXP DEP. Fixes #71244.
20887
20888 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20889
20890         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20891
20892 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20893
20894         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20895
20896 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20897
20898         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20899         changes.
20900
20901         * mini.h: Bump AOT version.
20902
20903         * mini.h (MonoCompile): Change exvar to a hash table.
20904
20905         * mini.c: Allocate a separate exvar for each handler block.
20906
20907         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20908
20909         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20910         ex var with the pending exception and only throw if the two are equal.
20911         Fixes #68552.
20912         
20913         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20914
20915         * mini-x86.c: Fix warnings.
20916
20917         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20918         used by all the ports now.
20919
20920         * aot.c: Add write-symbols and save-temps options.
20921
20922 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20923
20924         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20925
20926 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20927
20928         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20929         operations.
20930
20931         * tramp-s390.c: Check vtable slot belongs to the domain.
20932
20933         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20934         as per other platforms.
20935
20936         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20937
20938 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20939
20940         * driver.c: we don't run the Main() code in a subthread anymore.
20941
20942 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20943
20944         * mini.c: added experimental rtc support in the statistical
20945         profiler: if the user has the permission, more accurate statistics
20946         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20947         The MONO_RTC value must be restricted to what the linux rtc allows:
20948         power of two from 64 to 8192 Hz.
20949
20950 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20951
20952         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20953
20954 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20955
20956         * mini-ppc.c: better icache flush for smp.
20957
20958 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20959
20960         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20961
20962         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20963         amd64 port, not yet used.
20964
20965 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20966
20967         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20968         a struct type.
20969
20970 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20971
20972         * driver.c: Added --security option to activate the security manager.
20973         Right now this will allow code generation for declarative demands and
20974         is disabled when AOT is specified.
20975         * mini.c: Add code generation for declarative security demands.
20976         * mini.h: Add mono_use_security_manager as an extern gboolean.
20977
20978 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20979
20980         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20981         emitting more dense assembly code.
20982
20983         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20984         exception throwing stuff.
20985
20986 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20987
20988         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20989         dead code.
20990
20991         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20992         left in by mistake.
20993
20994         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20995         fixed.
20996
20997         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20998
20999         * tramp-*.c: Only patch vtable slots if the object is in the current
21000         domain. Fixes appdomain-unload.exe.
21001
21002         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21003         
21004         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21005         x86 branch.
21006
21007 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21008
21009         * mini.c (reverse_branch_op): New helper function.
21010
21011         * mini.c (optimize_branches): Run the new optimization only on 
21012         platforms which support it. Also reverse all kinds of branches.
21013
21014         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21015
21016         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21017         a throw statement.
21018
21019         * mini.c (optimize_branches): Reverse not-equals branches if the false
21020         bblock is a throw. This happens a lot of time with argument checking in
21021         corlib.
21022
21023         * mini.c (mono_codegen): Add support for placing basic blocks after
21024         the function epilogue.
21025
21026         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21027         function epilogue.
21028         
21029 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21030
21031         * mini.c (setup_stat_profiler): Only set this up if the platform
21032         supports ITIMER_PROF.
21033
21034 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21035
21036         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21037         previous patch.
21038
21039         * inssel.brg: Fix a warning.
21040
21041 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21042
21043         * mini.c: added support for statistical profiler 
21044         (run with: --profile=default:stat).
21045
21046 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21049
21050         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21051
21052         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21053         related to global registers from the amd64 port.
21054
21055 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21056
21057         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21058
21059         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21060         with global registers.
21061         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21062
21063         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21064
21065 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21066
21067         * debug-mini.c (encode_value): Fix off-by-one.
21068
21069         * aot.c (encode_value): Likewise.
21070
21071         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21072
21073 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21076         AOT.
21077
21078         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21079         
21080         * aot.c (emit_method_info): Increase size of temp buffer.
21081
21082         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21083         the AOT case.
21084
21085 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21086
21087         * aot.c (emit_method_info): Fix build.
21088         
21089         * aot.c: Further rework of the AOT file format to reduce the size of
21090         the method info data.
21091
21092         * mini.h: Bump AOT file format version.
21093
21094 2004-12-27  Martin Baulig  <martin@ximian.com>
21095
21096         * mini.c (mini_get_method): New static method; call
21097         mono_get_method_full() and mono_get_inflated_method().
21098         (mono_method_to_ir): Use mini_get_method() instead of
21099         mono_get_method_full(). 
21100
21101 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21102
21103         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21104
21105 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21108
21109         * inssel-amd64.brg: Add some optimization rules.
21110
21111 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21112
21113         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21114         standard not GC'd stuff is fine.
21115
21116 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21117
21118         * aot.c: Rework the AOT file format to get rid of most of the global
21119         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21120
21121         * mini.h: Bump AOT file format version.
21122         
21123 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21124
21125         * mini.h: Bump AOT file format version.
21126
21127         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21128         address is inside a GOT.
21129
21130         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21131
21132         * cpu-pentium.md: Increase the maximum size of some instructions which
21133         might involve a got access.
21134         
21135         * mini.c (get_method_from_ip): Another debug helper function.
21136
21137         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21138         when got var accesses are created during the decompose phase.
21139
21140         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21141
21142         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21143         argument mini_compile_method and to MonoCompile, and use this to
21144         determine whenever a given method is compiled for AOT. This allows the
21145         other methods compiled during AOT compilation to be free of AOT stuff,
21146         so the backends does not need to add special support for them by
21147         creating a fake GOT etc.
21148
21149         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21150         longer needed.
21151
21152 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21153
21154         * mini.c (mono_method_to_ir): It turns out that some of the
21155         x-appdomain wrappers are lax with types, so just ignore this for
21156         all wrappers.
21157
21158         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21159         at the vtable->klass. If it is non-shared code we can just use the
21160         vtable.
21161
21162 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21163
21164         * mini-ppc.c: access MonoDomain from tls, too.
21165
21166 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21167
21168         * declsec.c: Removed unused variable (and related warning ;-)
21169
21170 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21171
21172         * iltests.il: New test for LDELEMA on an array of ref types.
21173
21174         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21175         all ldelema's on reftypes.
21176         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21177         it was the wrong place to put it.
21178
21179         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21180         register to pop to make this cleaner, at the request of Paolo.
21181
21182 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21183
21184         * mini-ops.h (OP_GETHASHCODE): New op.
21185
21186         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21187
21188         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21189         operation.
21190
21191         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21192         by 25%.
21193         
21194         * mini-x86.c (mono_arch_output_basic_block): Rather than
21195
21196         add ebp, 4
21197
21198         Emit
21199
21200         pop edx
21201
21202         The first is 3 bytes while the second is 1. This saves 36 kb on
21203         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21204         see a small boost because of icache locality.
21205
21206         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21207
21208 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21209
21210         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21211         started code sharing with the generic code.
21212
21213 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21214
21215         * mini-ppc.c, cpu-g4.md: added code for direct access to
21216         tls data slots.
21217
21218 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21219
21220         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21221          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21222         to OP_TLS_GET.
21223
21224 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21225
21226         * declsec.c|h: Added functions to cache the declarative stack modifiers
21227         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21228         structure.
21229         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21230         created. Register internal calls for System.Security.SecurityFrame::
21231         _GetSecurityFrame and _GetSecurityStack.
21232         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21233         the definitions for the new stack walk/callback mechanism.
21234         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21235         first security frame for LinkDemands and InheritanceDemands) and
21236         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21237         from lupus.
21238         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21239         walk initialization (lupus).
21240
21241 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21242
21243         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21244         idiom.
21245         (handle_loaded_temps): Do not create a temporary variable for
21246         things that we know are temps. They will never be modified.
21247         (mono_spill_call): Set MONO_INST_IS_TEMP
21248         (mono_emulate_opcode): ditto
21249         (emit_tree): ditto
21250         (mono_method_to_ir.CEE_DUP): ditto
21251
21252 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21253
21254         * mini.c (type_to_eval_stack_type): Make this handle the void type
21255         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21256         (emit_tree): use ip_in_bb to special case some common idioms
21257         Update all callers to pass in the IP.
21258         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21259
21260         This gives us a nice 2% speedup in mcs bootstrap.
21261
21262         * mini-x86.c (peephole_pass): Peephole pass to make
21263         mov  [foo], eax
21264         push [foo]
21265
21266         into
21267
21268         mov [foo], eax
21269         push eax
21270
21271         * mini.c (ip_in_bb): new method.
21272         (mono_method_to_ir): use this method rather than doing the hash
21273         lookup ourselves.
21274
21275         * linear-scan.c (mono_linear_scan): When expiring actives, you
21276         don't need to keep around variables that expire on this
21277         instruction. This makes it so that:
21278              a = b + 1
21279         will turn into:
21280              store (ebx add (ebx, 1))
21281         which will become
21282              add ebx, 1
21283
21284 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21285
21286         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21287         combination to avoid doing two copies. Fix up problems with previous
21288         patch.
21289
21290         * mini.c: Fix 64 bit warnings.
21291
21292         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21293
21294 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21295
21296         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21297         changes from the x86 code.
21298
21299         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21300
21301 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21302
21303         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21304         throwing code to reduce its size, unify the AOT and non-aot code and 
21305         get rid of relocations in the AOT case.
21306
21307         * mini-x86.h mini.c exceptions-x86.c 
21308         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21309         raise corlib exceptions which doesn't require relocations in the 
21310         caller.
21311
21312         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21313
21314 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21315
21316         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21317         needed.
21318
21319         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21320         in the AOT case.
21321
21322 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21323
21324         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21325         with add function when used from Inc/dec atomic 
21326         functions. Re-enabled optimization on x86.
21327         * mini-ops.h: renamed atomic_add functions to
21328         allow _add to match the Interlocked::Add and
21329         _add_next to match Interlocked::Inc/Dec.
21330
21331 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21332
21333         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21334         linking of BBs to the end BB, and enabled SSAPRE also with
21335         consprop and copyprop (which was prevented by that bug).
21336
21337 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21338
21339         * mini-x86.c: disabling the Interlocked optimizing code. 
21340
21341 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21342
21343         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21344         file version check.
21345         
21346 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21347
21348         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21349         interlocked optimization due lack of support on x86, rewrote 
21350         exchange to take into account that base may be in eax.
21351         
21352         xsp works again; activated Interlocked optimizing code.
21353         
21354 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21355
21356         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21357
21358 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21359
21360         * mini-ops.h: Add new opcodes.
21361
21362         * mini.h: Add new patch types. Add got_var to MonoCompile.
21363
21364         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21365         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21366         make it work with all kinds of patchable code.
21367
21368         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21369         address of the GOT, and referencing entries in the GOT.
21370
21371         * mini.c: Add code to load the GOT address if needed by an opcode.
21372
21373         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21374         independent AOT code on the x86 using an elf-style Global Offset Table.
21375
21376 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21377
21378         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21379
21380 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21381
21382         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21383         when running xsp.
21384
21385 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21386
21387         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21388         of Interlocked:Increment/Decrement/Add as inline ops.
21389         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21390
21391 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21392
21393         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21394         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21395
21396 2004-12-12  Duncan Mak  <duncan@ximian.com>
21397
21398         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21399         again. `patch_info->table_size' is no longer valid after Zoltan's
21400         commit #37636.
21401
21402 2004-12-12  Martin Baulig  <martin@ximian.com>
21403
21404         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21405         if we are the "real" method, ie. not an inlined method inside it.
21406
21407 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21408
21409         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21410         before we look in the special fields table. This fixes
21411         ../tests/thread-static-init.cs.
21412
21413 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21414
21415         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21416         for Array get_Rank and get_Length. Fixes bug #70465.
21417
21418 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21419
21420         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21421         separate structure to reduce the size of MonoJumpInfo.
21422
21423 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21424
21425         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21426
21427 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21428
21429         * mini.c (mini_get_inst_for_method): Changed to allow ports
21430         to return a MonoInst instead of opcode 
21431         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21432         
21433         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21434         Allow ports to return a created MonoInst instead of op-code, will enable
21435         new optimizations.
21436         (renamed mini_get_opcode_for_method to better reflected the functionality)
21437
21438 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21439
21440         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21441
21442 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21443
21444         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21445         Fixes #69985.
21446
21447 2004-12-08  Martin Baulig  <martin@ximian.com>
21448
21449         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21450         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21451
21452 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21453
21454         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21455         correctly.
21456
21457         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21458         arithmetic.
21459
21460 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21461
21462         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21463
21464 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21465
21466         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21467         bug introduced by the previous patch.
21468
21469 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21470
21471         * mini-ppc.c, objectc.cs: handle large structs passed by value
21472         (fixes bug #69972).
21473
21474 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21475
21476         * mini-ppc.c: OP_ARGLIST implementation from
21477         Geoff Norton  <gnorton@customerdna.com>.
21478
21479 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21480
21481         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21482         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21483
21484 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21485
21486         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21487
21488 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21489
21490         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21491         support.
21492
21493 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21494
21495         * mini-sparc.c: Zero out localled-ed memory.
21496
21497         * iltests.il: Add tests for zeroing out localloc-ed memory.
21498
21499 2004-12-04  Martin Baulig  <martin@ximian.com>
21500
21501         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21502         mono_method_get_signature_full().       
21503
21504 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21505
21506         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21507         and some utility functions (always for SSAPRE), integrated SSAPRE.
21508         * mini.h: Likewise.
21509         * driver.c: Added ssapre option.
21510         * ssa.c: Small fix on OP_ARG handling.
21511         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21512         * Makefile.am: Likewise.
21513
21514 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21515
21516         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21517         now in the xp code.
21518
21519         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21520         icall.
21521
21522 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21523
21524         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21525         
21526         * cpu-s390.md : Increase instruction length of oparglist.
21527
21528         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21529
21530 2004-11-30  Martin Baulig  <martin@ximian.com>
21531
21532         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21533         virtual generic methods.  We call a special helper_compile_generic_method()
21534         icall to retrieve the method from the vtable, inflate and compile
21535         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21536
21537         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21538
21539 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21540
21541         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21542
21543 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21544
21545         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21546         Fixes #69929.
21547
21548 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21549
21550         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21551         platforms with PIC aot.
21552
21553 2004-11-28  Martin Baulig  <martin@ximian.com>
21554
21555         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21556         Fixes gen-112.cs.
21557
21558 2004-11-28  Martin Baulig  <martin@ximian.com>
21559
21560         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21561         the result of mono_type_get_underlying_type() to check whether
21562         we're byref.
21563
21564 2004-11-26  Martin Baulig  <martin@ximian.com>
21565
21566         * mini.c
21567         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21568         in the g_assert().
21569
21570 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21571
21572         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21573         the same way as the other arguments so they won't get clobbered.
21574
21575         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21576         calls through R11 since it is clobbered by the trampoline code.
21577
21578 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21579
21580         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21581         pick up in-tree mscorlib.dll.
21582
21583 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21584
21585         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21586
21587         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21588         runtime data/code are now stored in a table similar to the GOT in ELF. 
21589         This allows the code itself to be position independent.
21590
21591         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21592         loading changes.
21593
21594         * aot.c: Attach ELF type (object/function) directives to all global
21595         symbols.
21596
21597         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21598
21599         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21600
21601         * mini-amd64.h: Turn on PIC AOT code.
21602
21603         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21604         returning the offset within an OP_AOTCONST instruction where the GOT
21605         offset needs to be added.
21606
21607         * mini.h: Bump AOT file format version.
21608
21609 2004-11-25  Martin Baulig  <martin@ximian.com>
21610
21611         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21612         uninflated generic methods.
21613
21614 2004-11-25  Martin Baulig  <martin@ximian.com>
21615
21616         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21617
21618 2004-11-24  Martin Baulig  <martin@ximian.com>
21619
21620         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21621         original klass (this only applies for generic instances).
21622
21623 2004-11-24  Martin Baulig  <martin@ximian.com>
21624
21625         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21626         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21627         that array).
21628
21629 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21630
21631         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21632         localloc. Fixes #69678.
21633
21634         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21635         
21636 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21637
21638         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21639         used SSE registers on pinvoke calls. Fixes #69774.
21640
21641 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21642
21643         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21644         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21645
21646 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21647
21648         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21649         Refer directly to the mcs/ tree.
21650
21651 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21652
21653         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21654         Check if a trampoline for a synchronized method is required. 
21655
21656 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21657
21658         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21659         with localloc if needed. Throe arithmetric exception in
21660         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21661         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21662
21663 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21664
21665         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21666         types before switching on type.  Fixes #69622.
21667
21668 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21669
21670         * Makefile.am (check-local): New.  Integrate into 'make check'.
21671         (MCS,RUNTIME): Define using in-tree mono and mcs.
21672         (ILASM): New.
21673         (%.exe): Use $(ILASM).
21674
21675 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21676
21677         * mini-ppc.c: adjust initial prolog size (bug #69691).
21678
21679 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21680
21681         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21682         #69664.
21683
21684 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21685
21686         * Makefile.am (clean-local): Rename from 'clean'.
21687
21688 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21689
21690         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21691         to mono_arch_is_int_overflow. 
21692         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21693         SIGFPE events.
21694
21695 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21696
21697         * declsec.c|h: New files to support declarative security attributes.
21698         Added function to check if a method has (applicable) security.
21699         * mini.c|h: Add check for declarative security attributes in
21700         mono_method_check_inlining.
21701         * Makefile.am: Added declsec.c and declsec.h to the build.
21702
21703 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21704
21705         * mini.c, mini.h: update to keep dynamic code info per-domain.
21706
21707 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21708
21709         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21710         (mini_init): Get rid of it from here too.
21711
21712 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21713
21714         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21715         implemented OP_RETHROW (patch by Geoff Norton
21716         <gnorton@customerdna.com>).
21717
21718 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21719
21720         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21721         between appdomains.  Fixes appdomain-unload on PPC.
21722
21723 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21724
21725         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21726         mini-exceptions.c: handle the new wrapper types.
21727         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21728         token value as a MonoClass* when compiling a wrapper.
21729         mono_jit_create_remoting_trampoline now takes an additional
21730         MonoRemotingTarget parameter.
21731         
21732 2004-11-10  Martin Baulig  <martin@localhost>
21733
21734         * mini.c (mono_method_to_ir): Use `generic_container->context'
21735         rather than creating a new one.
21736
21737 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21738
21739         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21740
21741         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21742
21743 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21744
21745         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21746         the experimental aot cache stuff.
21747
21748 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21749
21750         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21751         mini-exceptions.c: update to exception clause structure changes.
21752
21753 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21754
21755         * exceptions-x86.c (throw_exception): Fix warnings.
21756
21757         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21758         for OP_RETHROW.
21759
21760 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21761
21762         * exceptions-sparc.c (get_throw_exception): Really fix this.
21763
21764 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21765
21766         * tramp-*.c: we no longer support icalls without wrappers, so
21767         a bit of code can be removed here
21768
21769 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21770
21771         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21772         patch.
21773
21774         * cpu-sparc.md: Add op_rethrow.
21775
21776         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21777
21778         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21779
21780         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21781         * mini-ops.h: Add OP_RETHROW.
21782
21783         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21784
21785         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21786
21787 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21788         
21789         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21790         Makes the output much easier to read
21791
21792 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21793
21794         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21795         prevents another huge leak when compiling with ssa. Secondly, the
21796         performance of doing this rather than freeing the lists is much
21797         better. GList does a lock every time you allocate a list link,
21798         so that it can use a memory pool. So, it is better to just use
21799         a memory pool of our own.
21800         
21801         * ssa.c, linear-scan.c: replace g_list_remove_link with
21802         g_list_delete.  The remove one does not free the GList, so we were
21803         leaking memory. On -O=all --compile-all with corlib, this cut down
21804         3 MB of allocations.
21805
21806 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21809
21810         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21811
21812         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21813         into a new function mono_create_jit_trampoline ().
21814
21815 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21816
21817         * trace.c (get_spec): Allow tracing of classes without a namespace.
21818
21819 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21820
21821         * mini.c: Fix pointer overwrite in mini_method_compile.
21822
21823 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21824
21825         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21826         The darwin ABI needs some special handling for 1 and 2 byte structs
21827         Lets use lbz/lhz instead of lwz everywhere.
21828         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21829         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21830         Use stb/sth for the former, and put the latter always on stack instead of in
21831         argument registers.
21832
21833 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * trace.c (is_filenamechar): Add '_'.
21836
21837 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21838
21839         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21840
21841         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21842
21843 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21844
21845         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21846         depends on libmonogc. Fixes #68805.
21847
21848 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21849
21850         * mini.c (mono_jit_free_method): Provide extra information for
21851         this error.  Currently this leaks, but will be turned into a
21852         developer option in the future.
21853
21854 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21855
21856         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21857
21858 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21859
21860         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21861         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21862         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21863
21864 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21865
21866         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21867         trampolines for AOT code.
21868
21869 2004-10-22    <vargaz@freemail.hu>
21870
21871         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21872         constructed types. Fixes #68136.
21873
21874 2004-10-21  Martin Baulig  <martin@ximian.com>
21875
21876         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21877         if it returns true, unwind the stack to the call instruction.
21878
21879 2004-10-21    <vargaz@freemail.hu>
21880
21881         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21882
21883         * mini.h: Bump AOT version number.
21884
21885         * objects.cs: Add another test for unbox trampolines.
21886
21887         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21888         valuetype methods.
21889
21890 2004-10-20    <vargaz@freemail.hu>
21891
21892         * driver.c: Add SHARED to the set of optimizations tested.
21893
21894         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21895
21896         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21897         used by CEE_NEWARR.
21898
21899         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21900
21901 2004-10-20  Martin Baulig  <martin@ximian.com>
21902
21903         * mini-exceptions.c (mono_handle_exception): Call
21904         mono_debugger_handle_exception() to tell the debugger about
21905         catch/finally clauses.
21906
21907 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21908
21909         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21910
21911         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21912         #68447.
21913
21914 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21915
21916         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21917         methods as their native size, fixed bug #57543, #57545.
21918         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21919         This saves a temporary register and mullw call down into 1 (minor perf
21920         increase for cases like sum = sum * 5;  This use to translate into:
21921             li r11,5
21922             mullw r28,r28,r11
21923         It now translates to
21924             mulli r28,r28,5
21925
21926 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21927
21928         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21929         #68388.
21930
21931 2004-10-11  Martin Baulig  <martin@ximian.com>
21932
21933         * mini.c (mono_method_to_ir): If we're a generic method, get the
21934         MonoGenericContainer from our MonoMethodNormal and create a
21935         MonoGenericContext from it.
21936
21937 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21938
21939         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21940
21941         * basic-long.cs: Add test for checked i8->i2 cast.
21942
21943 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21944
21945         * inssel-ppc.brg: added a couple of speedup rules.
21946
21947 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21948
21949         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21950         to speed up rebuilds.
21951
21952 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21953
21954         * mini-s390.c: Minor fix to OP_OR_IMM.
21955
21956 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21957
21958         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21959         better. Fixes appdomain-unload.exe on sparc.
21960
21961 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21962
21963         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21964         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21965         see bug 67324.
21966
21967 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21968
21969         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21970
21971 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21972
21973         * mini.c: Always generate a field read/write wrapper for members
21974         of the class MarshalByRefObject since the actual instance could
21975         be a CBO.
21976
21977 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21978
21979         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21980
21981 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21982
21983         * driver.c mini.h trace.c: Move the setting of the main assembly into
21984         a separate function called mono_trace_set_assembly () and call it after
21985         actually loading the main assembly. Fixes #66872.
21986
21987 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21988
21989         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21990         using the code manager.
21991
21992 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21993
21994         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21995
21996 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21997
21998         * cpu-amd64.md: Fix bug in previous patch.
21999         
22000         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22001         #66650.
22002
22003 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22004
22005         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22006         mini-exceptions.c: updates for changed stack walk interface.
22007
22008 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22009
22010         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22011
22012 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22013
22014         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22015
22016 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22019         since assemblies can't be unloaded.
22020         
22021 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22022
22023         * cpu-amd64.md: Fix more instruction lengths.
22024
22025         * cpu-amd64.md: Fix lengths of some instructions.
22026
22027 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22028
22029         * inssel.brg: Make the array ldelema check aot friendly.
22030
22031 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22032
22033         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22034
22035         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22036
22037 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22038
22039         * mini-x86.c: Fix build.
22040
22041         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22042         mono_type_get_underlying_type () helper function to simplify code.
22043         
22044 2004-09-09  Martin Baulig  <martin@ximian.com>
22045
22046         * mini-amd64.c: Don't access `type->data.klass' directly, call
22047         mono_class_from_mono_type() instead since the type may be a
22048         generic instance.
22049
22050 2004-09-09  Martin Baulig  <martin@ximian.com>
22051
22052         * mini-amd64.c (get_call_info): Fix support for generic instances.
22053         (add_valuetype): Use mono_class_from_mono_type() to get the class
22054         since we can be a generic instance.
22055
22056 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22057
22058         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22059
22060 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22061
22062         * liveness.c: reset spill costs on each scan: bug 62107
22063
22064 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22065
22066         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22067         unnecessary line that doesn't compile
22068
22069 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22070
22071         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22072         trampolines, make them call an error function so people can fix their
22073         code.
22074
22075 2004-09-06  Martin Baulig  <martin@ximian.com>
22076
22077         * mini.c (mono_method_to_ir): When initializing locals, handle a
22078         generic instances like a valuetype if it's a valuetype and like a
22079         class if it's a class.
22080
22081 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22082
22083         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22084         stack. Fixes #64674.
22085
22086         * exceptions.cs: Add test for unwinding of call arguments.
22087
22088 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22089
22090         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22091         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22092         set the carry/borrow flag). The sparc and s390 implementations
22093         can now use optimized versions (and simplify the code). ppc bugfixes.
22094
22095 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22096
22097         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22098
22099 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * inssel-amd64.brg: Remove leftover 32 bit rule.
22102
22103         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22104
22105 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22106
22107         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22108         mono_arch_find_jit_info functions into a new function. Fix a memory
22109         leak.
22110
22111         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22112         refactored code.
22113         
22114 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22115
22116         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22117         as well.
22118         
22119         * exceptions.cs: Add array size tests.
22120
22121         * mini.c: Allocate a separate icall wrapper for each arity of 
22122         mono_array_new_va. Fixes #59509.
22123
22124         * exceptions.cs: Add testcase for 64578.
22125
22126         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22127
22128         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22129         
22130 2004-09-02  Martin Baulig  <martin@ximian.com>
22131
22132         * mini.c (mono_method_to_ir): When initializing the locals, call
22133         handle_initobj() on the generic instance itself, not its
22134         underlying type.
22135
22136 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22139         MonoJitInfo for dynamic methods.
22140
22141         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22142
22143         * mini.c: Add support for freeing JIT data for dynamic methods.
22144         
22145 2004-09-01  Martin Baulig  <martin@ximian.com>
22146
22147         * mini-x86.c (is_regsize_var): Added support for generic
22148         instances.
22149         (mono_arch_emit_prolog): Make this compile again, use
22150         `x86_push_imm_template (code)'.
22151
22152 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22153
22154         * mini-x86.c: make all push_imm instructions that get
22155         patched always emit the long form
22156
22157 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22158
22159         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22160         in a per-domain hash.
22161
22162         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22163         types.
22164
22165 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22166
22167         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22168         work.
22169         
22170         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22171         work.
22172
22173         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22174         Beginnings of SSE2 support.
22175
22176         * exceptions.cs: Add more tests for checked int<->uint casts.
22177
22178 2004-08-28  Martin Baulig  <martin@ximian.com>
22179
22180         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22181         generic instances.
22182
22183         * mini.c
22184         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22185         Handle generic instances recursively.
22186
22187 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22188
22189         * iltests.il: test for conv.u8 on a constant
22190
22191 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22192
22193         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22194         LCONV_x4 (shrun_32 (membase)).
22195
22196 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22197
22198         * inssel-x86.brg: c&p rules for push/setret of long
22199
22200 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22201
22202         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22203         compare (regvar, base)
22204
22205         * inssel-x86.brg: more burg love
22206
22207         * inssel.brg: more cleanup
22208
22209         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22210
22211 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22212
22213         * basic-long.cs, basic-calls.cs: new tests for optimization.
22214
22215 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22216
22217         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22218         patch.
22219
22220 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22221
22222         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22223         
22224 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22225
22226         * inssel.brg (mini_emit_memcpy): use 
22227         NO_UNALIGNED_ACCESS to disable memcpy optimization
22228
22229 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22230
22231         * mini-amd64.c: Handle generic types in various places.
22232
22233         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22234
22235 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22236
22237         * mini.c (handle_box): Fix warning.
22238
22239         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22240
22241         * mini-amd64.h: Enable the emit_state optimization.
22242
22243         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22244
22245         * mini-amd64.c: Add some new 64 bit peephole opts.
22246
22247         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22248
22249         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22250
22251         * mini-amd64.c: Register allocator fixes.
22252
22253         * mini.c: Add an optimization to emit_state to avoid allocation of new
22254         registers on some platforms.
22255
22256 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22257
22258         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22259
22260         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22261         allocation. Fixes #63085.
22262
22263         * basic-long.cs: Add new regression test.
22264
22265         * mini-amd64.c: Register allocator improvements.
22266
22267 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22268
22269         * mini-amd64.c (read_tls_offset_from_method): Add another code
22270         sequence.
22271
22272         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22273         instruction sequence for nullifying class init trampolines.
22274
22275         * objects.cs: Add new regalloc test.
22276
22277         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22278
22279 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22280
22281         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22282         
22283         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22284         arguments.
22285
22286         * driver.c: Fix profiling after TLS changes.
22287         
22288         * driver.c (mono_main): Set mono_stats.enabled if needed.
22289
22290         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22291         CEE_BOX.
22292
22293 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22294
22295         * mini-x86.c: use a 1 op rather than a 2 op tls access
22296         instruction -> faster.
22297
22298 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22299
22300         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22301         x86 backend.
22302
22303 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22304
22305         * exceptions-sparc.c (throw_exception): fix typo
22306
22307 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22308
22309         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22310         set tree->dreg correctly with tls. Allow any
22311         register to be used.
22312
22313         * mini-x86.c (read_tls_offset_from_method): add new code
22314         generation pattern seen with GCC.
22315
22316
22317 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22318
22319         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22320         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22321         exceptions-sparc.c: fix some performance issues in exception
22322         handling and setting of the stack trace for exceptions that were
22323         already thrown.
22324
22325 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22326
22327         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22328         x86 backend.
22329         
22330         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22331         registers.
22332
22333 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22334
22335         This patch inlines tls access, when possible.
22336         
22337         * mini.h: new arch functions for TLS intrinsics.
22338         All platforms updated with a stub.
22339
22340         * mini.c: use the new intrinsics
22341
22342         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22343         arch specific intrinsic for tls variables
22344
22345 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22346
22347         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22348         under windows.
22349
22350 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22351
22352         * mini.c: thread local allocation
22353
22354 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22355
22356         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22357
22358         * Makefile.am: Link against the static version of libmonogc.
22359         
22360         * Makefile.am: Link the static versions of the convenience libraries
22361         into the mono executable.
22362
22363         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22364
22365 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22366
22367         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22368         on integer overflow.
22369
22370         * mini-amd64.c: Reorganize function call code.
22371
22372         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22373
22374 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22375
22376         * inssel-x86.brg: use xor eax,eax.
22377         
22378         * basic.cs: new tests
22379
22380 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22381
22382         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22383         in exception throwing code.
22384         
22385 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22386
22387         * inssel-x86.brg: use xor esi,esi.
22388
22389 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22390
22391         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22392         can trace methods compiled during mini_init () too.
22393
22394         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22395         CEE_CONV_U4.
22396
22397 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22398
22399         * Makefile.am: static link on x86 (r=zoltan)
22400
22401 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22402
22403         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22404         code since it causes some programs to fail.
22405
22406 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22407
22408         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22409
22410 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22411
22412         * mini.c: ovfops_op_map - add STACK_OBJ case for
22413         CONV_I 
22414         * basic.cs: add test_0_pin_string as test
22415         case for above.
22416
22417 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22418
22419         * Makefile.am: build C# if srcdir != builddir
22420
22421 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22422
22423         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22424         fall-through blocks.
22425
22426 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22427
22428         * driver.c: enable loop by default again and include abcrem in -O=all.
22429
22430 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22431
22432         * iltests.il: Add some localloc tests.
22433
22434         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22435
22436         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22437         Fixes #62574.
22438
22439         * inssel-amd64.brg: Add some optimizations.
22440
22441         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22442         for gcc-3.4.
22443
22444         * Makefile.am: Statically link mono against libmono on AMD64.
22445         
22446         * mini-amd64.c inssel-amd64.brg: Optimizations.
22447
22448 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22449
22450         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22451
22452         * tramp-amd64.c: Patch calling code in trampolines.
22453
22454 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22455
22456         * mini-amd64.c: pinvoke struct passing fixes.
22457
22458 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22459
22460         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22461         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22462
22463 2004-08-05  Duncan Mak  <duncan@ximian.com>
22464
22465         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22466         CEE_LDELEM_ANY.
22467
22468 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22469
22470         * mini-amd64.c (emit_move_return_value): Move return value for normal
22471         calls too.
22472
22473 2004-08-05  Martin Baulig  <martin@ximian.com>
22474
22475         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22476         `type->type'; just modify `type' itself when dealing with enums
22477         and generic instances.
22478         (check_call_signature): Make `simple_type' a `MonoType *'.
22479
22480 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22481
22482         * mini.c: Use OP_PADD to add offsets to addresses.
22483
22484         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22485
22486 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22487
22488         * mini-sparc.c (mono_arch_emit_epilog): fix check
22489         for folding last op into restore instruction
22490
22491 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22492
22493         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22494         helper methods using the code manager.
22495         
22496         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22497
22498         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22499
22500 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22501         
22502         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22503           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22504
22505         * mini-s390.c: fix tail processing
22506
22507 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22508
22509         * mini-ppc.c: mul.ovf.un exception name fix.
22510
22511 2004-08-03  Martin Baulig  <martin@ximian.com>
22512
22513         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22514         instances; before jumping to `handle_enum', also modify `ptype'.
22515
22516 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22517
22518         * cpu-sparc.md: fcall maximal length too small.
22519
22520 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22521
22522         * mini-amd64.c mini.h: Add initial support for passing/returning 
22523         structures to/from pinvoked methods.
22524
22525 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22526
22527         * mini-ppc.c: reg allocator fix.
22528
22529 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22530
22531         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22532
22533         * inssel.brg: Optimize memset on 64 bit machines.
22534
22535         * mini-amd64.c: Fix some vararg cases.
22536
22537 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22538
22539         * mini-s390.c: Corrected macro in emit_float_to_int
22540
22541         * s390-abi.cs: Tests to exercise the s390 ABI
22542
22543 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22544
22545         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22546         caller saved regs.
22547
22548         * basic.cs: Add a test for add.ovf.un.
22549
22550 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22551
22552         * mini-sparc.c: add case for OP_IDIV_UN
22553
22554 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22555
22556         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22557         
22558         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22559
22560 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22561
22562         * basic.cs: regression tests.
22563
22564         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22565         regressions.
22566
22567 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22568
22569         * basic.cs: Add a new test.
22570
22571         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22572         and AOT. Various fixes and optimizations.
22573
22574         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22575
22576 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22577
22578         * mini-ppc.c: make sure temp regs are not used for global reg
22579         allocation.
22580
22581 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22582
22583         * cpu-sparc.md: conv_i8 fix for 64bits
22584
22585         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22586
22587 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22588         
22589         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22590         add opcode for cmp BYTE PTR [eax], imm.
22591
22592         * inssel.brg: Make memcpy and memset takes bases.
22593
22594 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22595
22596         * *-amd64.*: More AMD64 work.
22597         
22598 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22599
22600         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22601         add a compare-not-equal opcode.
22602         
22603 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22604
22605         * mini.c: Use mono_init_from_assembly instead of mono_init.
22606         
22607 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22608
22609         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22610
22611         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22612
22613         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22614
22615         * inssel.brg: 64 bit fixes.
22616
22617         * mini.h (MonoCallInst): Add some AMD64 specific data.
22618
22619         * mini.h: Add some OP_P opcodes.
22620
22621 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22622
22623         * basic.cs: tests for 61797 and 61740
22624
22625 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22626
22627         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22628         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22629
22630 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22633
22634         * *-amd64*.*: Ongoing AMD64 work.
22635
22636 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22637
22638         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22639
22640         * *-amd64*: Ongoing AMD64 work.
22641
22642         * mini-arch.h: Add AMD64 support.
22643
22644         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22645
22646         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22647
22648         * mini-ops.h: Add new opcodes.
22649
22650         * Makefile.am: Add AMD64 support.
22651
22652         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22653         rules into the inssel-long*.brg files.
22654
22655         * *-amd64.*: Add beginnings of AMD64 backend.
22656
22657 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22658
22659         * mini.c (print_dfn): commenting out the code that prints
22660         the cil. With -O=deadce, this makes -v -v crash.
22661         
22662         * cpu-pentium.md: make checkthis have a length of 2
22663
22664 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22665
22666         * mini-sparc.h: fix implementations of __builtin
22667         functions for Sun compiler for V9.
22668
22669 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22670
22671         * mini.c: use the new stelem.ref wrapper
22672         * exceptions.cs, arrays.cs: new stelem.ref tests
22673
22674 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22675
22676         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22677         new XSP should work with these changes).
22678
22679 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22680         
22681         * inssel-{long32,x86,}.brg: trivial optimizations.
22682         
22683 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22684
22685         * mini.c: load value when emitting box operation in
22686         constrained calls.
22687
22688 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22689
22690         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22691         is one byte shorter than cmp DWORD PTR [eax], 0.
22692
22693 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22694
22695         * inssel-ppc.brg: arguments on the stack are always
22696         relative to the stack pointer (spotted by Neale Ferguson).
22697
22698 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22699
22700         * exceptions-x86.c: delay appending the method name to the trace until
22701         after mono_jit_info_table_find is called, as this gets the real
22702         MonoMethod.
22703
22704 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22705
22706         * aot.c: register roots
22707
22708 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22709
22710         * aot.c : I could just use PLATFORM_WIN32 flag.
22711
22712 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22713
22714         * aot.c : Reverting the previous fix. This time it broke linux build.
22715
22716 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22717
22718         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22719
22720 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22721
22722         * mini.c (handle_stack_args): Remove some more debugging code.
22723         
22724         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22725
22726         * driver.c mini.h aot.c: Allow additional options to be specified with
22727         --aot and pass them to mono_compile_assembly.
22728
22729         * aot.c: Add experimental code to AOT compile all loaded assemblies
22730         on demand and save the code into a cache in the filesystem.
22731
22732         * aot.c: Add support for more wrapper methods.
22733         
22734         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22735         58863.
22736
22737         * cpu-*.md: Remove removed opcodes.
22738
22739         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22740         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22741         related icalls to marshal.c.
22742
22743 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22744
22745         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22746
22747         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22748
22749         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22750
22751 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22752         * liveness.c: If liveness is recomputated we need to reset the information
22753         for each variable. This way, if the liveness range has been narrowed
22754         by optimizations that happened after the last computation, we can return
22755         a smaller range.
22756         
22757         For example, if you have
22758         
22759         {
22760                 int i = 0;
22761                 
22762                 // Tons of code that does not affect i
22763                 
22764                 i = foo ();
22765                 ...
22766         }
22767         
22768         i = 0 is dead code and will be removed by SSA. However, when
22769         linear scan gets to the code, i will still appear to be live
22770         throughout the entire block. This prevents good register allocation.
22771
22772 2004-07-06  Martin Baulig  <martin@ximian.com>
22773
22774         * debug-mini.c (mono_debug_init_method): Allow
22775         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22776         (mono_debug_add_icall_wrapper): New method.
22777
22778         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22779
22780 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22781
22782         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22783         optimization.
22784
22785 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * aot.c (mono_aot_load_method): Fix loading of debug info.
22788
22789 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * aot.c: Add logging support.
22792
22793 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22794
22795         * mini.h: Add prototype for mono_print_method_from_ip.
22796
22797         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22798
22799         * inssel.brg: 64 bit fixes.
22800
22801         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22802         inssel-long32.brg.
22803
22804         * Makefile.am: Add SPARC64 support.
22805
22806 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22807
22808         * aot.c: Fix alignment problems on 32 bit platforms.
22809
22810 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22811
22812         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22813         SPARC64.
22814
22815         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22816         problems.
22817
22818         * mini.h: Bump AOT file version. Some 64 bit fixes.
22819
22820 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22821
22822         * inssel-sparc.brg: Add new rule to avoid register moves.
22823
22824         * inssel.brg: Add ldind_to_load_membase helper function.
22825
22826 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22827
22828         * mini.c: OffsetToStringData intrinsic.
22829         
22830 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22831
22832         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22833
22834         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22835         regression tests.
22836
22837         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22838 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22839
22840         * mini.c: reinstated mono_compile_get_interface_var()
22841         on x86, too, since the change breaks the Gtk# build there as well.
22842
22843 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22844
22845         * driver.c: remove loop from the default optimizations: it seems to
22846         interact badly with some of the other options (see bug #60613).
22847
22848 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22849
22850         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22851         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22852
22853 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22854
22855         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22856         vararg-using methods.
22857
22858 2004-06-21  Martin Baulig  <martin@ximian.com>
22859
22860         * mini/mini-exceptions.c
22861         (mono_handle_exception): Added `gpointer original_ip' argument.
22862         After calling mono_unhandled_exception(), call
22863         mono_debugger_unhandled_exception() and if that returns true,
22864         restore the context and return.
22865
22866 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22867
22868         * mini-ppc.c: prefer the use of relative branches so
22869         they won't need to be patched in aot code (patch from Patrick Beard).
22870
22871 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22872
22873         * aot.c: patch from Patrick Beard to make the output assembly
22874         more correct for the MacOSX assembler. Small tweak to
22875         generate sane images on Linux/PPC, too.
22876
22877 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22878
22879         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22880         case until bug #59509 is fixed (shows up in #60332).
22881
22882 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22883
22884         * mini.c: make sure the needed wrappers are compiled, too, with
22885         precomp.
22886
22887 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22888
22889         * driver.c: remove NPTL reference in --version output.
22890
22891 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22892
22893         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22894         generate valid assembly for the Mach-O assembler.
22895
22896 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22897
22898         * driver.c: don't include abcrem in the all optimization specifier
22899         since it slows down jit compilation too much for now.
22900
22901 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22902
22903         * mini.c: use BIGMUL only if both operands have the same signage.
22904         * iltests.il: Test for bug 60056. (errors related to signage in
22905         BIGMUL).
22906
22907         r=lupus.
22908
22909 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22910
22911         * mini.c, aot.c: memory leak fixes.
22912
22913 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22914
22915         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22916
22917 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22918
22919         * Makefile.am: remove the -static hack completely, it links in
22920         statically glib as well.
22921
22922 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22923
22924         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22925         * exceptions.cs: make it compile with new mcs/csc.
22926
22927 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22928         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22929         and added relevant test case.
22930
22931 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22932
22933         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22934         regressions in gtk-sharp.
22935
22936 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22937
22938         * exceptions.cs: New regression tests.
22939
22940         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22941
22942 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22943
22944         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22945
22946 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22947
22948         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22949
22950         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22951
22952 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22953
22954         * mini.c (mono_jit_runtime_invoke): Init class in this
22955         method instead of trusting mono_jit_compile_method to
22956         do the work (because wrappers can be in object class)
22957
22958 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22959
22960         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22961
22962         * basic-long.cs: New regression test.
22963
22964 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22965
22966         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22967         and div/rem checks.
22968
22969 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22970
22971         * Makefile.am: fix miguel's change to build mono statically against
22972         libmono (track build dependencies).
22973
22974 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22975
22976         * cfold.c: Some glib versions do not have G_MININT32.
22977
22978 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22979
22980         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22981         with precision of tan, atan, sin and cos, and implemented related
22982         regressions tests (fixes bug 54467, but one new problem appeared and
22983         is not fixed yet).
22984
22985 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22986
22987         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22988
22989         * exceptions.cs: Add test for constant folding && division by zero.
22990
22991         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22992         since driver.c is in libmono too, so the optimization was useless.
22993
22994         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22995         variable to driver.c so the compiler can emit more efficient code to
22996         access them.
22997
22998 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22999
23000         * Makefile.am: don't distribute generated inssel.[ch] files.
23001
23002 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23003
23004         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23005         into the default appdomain. Fixes #58707.
23006
23007         * jit-icalls.c: Remove the broken approximation for truncl, doing
23008         no conversion is better.
23009
23010         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23011         Fixes #58863.
23012
23013 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23014
23015         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23016         of the mcrxr instruction which is not available on some processors
23017         even if it's documented to be. Implement add and sub overflow correctly
23018         (still not complete for long unsigned). Speed up icalls a bit.
23019
23020 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23021
23022         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23023         we run .cctor in the current domain instead of target_domain.
23024         
23025         Fixes bug #58558, .cctor not being called in -O=shared.
23026
23027 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23028
23029         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23030
23031 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23032
23033         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23034         which can be done with an imm8, do it that way.
23035         (mono_arch_output_basic_block): ditto for a jmp
23036         (mono_arch_emit_prolog): Computate maximum offset of a label.
23037
23038 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23039
23040         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23041         now tries to allocate prefered physical reg's for virtual
23042         regs. This reduces the number of emited spills/loads with
23043         20-30% on our core assemblies.
23044
23045 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23046
23047         * jit-icalls.c: truncl() is not needed and trunc() is
23048         the correct thing to do anyway (bug #58287).
23049
23050 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23051
23052         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23053         if available.
23054
23055 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23056
23057         * driver.c: enable loop optimizations by default.
23058
23059 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23060
23061         * mini-x86.c: fix calc of max loop size when aligning loops start.
23062
23063 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23064
23065         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23066         the stack.
23067
23068 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23069
23070         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23071         should set carry.
23072
23073         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23074
23075         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23076         
23077         * mini.c (inline_method): Allways inline some wrappers even if the cost
23078         is too large. Fixes #58785.
23079
23080         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23081         
23082 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23083
23084         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23085         (crichton@gimp.org). Beginning of support for sparc/linux.
23086
23087         * mini-sparc.c: Optimize retrieval of LMF address.
23088
23089 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23090
23091         * exceptions-ppc.c:  handle alloca in methods with clauses.
23092
23093 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23094
23095         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23096
23097 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23098
23099         * mini.c: Delegate most of the abort signal work to 
23100           mono_thread_request_interruption, which also handles Stop and Suspend
23101           states.
23102
23103 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23104
23105         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23106         supports the save/restore lmf opcodes.
23107
23108 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23109
23110         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23111         by gcc-3.4 as well.
23112
23113         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23114
23115 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23116
23117         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23118         methods which contain array accesses.
23119
23120         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23121         boundaries. Fixes #58537.
23122
23123         * iltests.il: Add regression test for #58537.
23124
23125 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23126
23127         * mini-x86.c (mono_arch_local_regalloc): Last part of
23128         fix for bug #58633 (releasing register to early).
23129
23130 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23131
23132         * basic-long.cs: Add new regression test.
23133
23134 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23135
23136         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23137         register too early on the chain.
23138
23139 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23140
23141         * mini.c (create_helper_signature): Use a helper function to reduce
23142         the code which needs to be written. Also set the calling convention of
23143         icalls on windows. Fixes #57840.
23144
23145 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23146
23147         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23148         exceptions-ppc.c: added helper function to get the instruction address
23149         from a signal handler context.
23150
23151 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23152
23153         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23154         from gonzalo.
23155
23156 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23157
23158         * helpers.c: Add new env variable to pass args to objdump.
23159         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23160
23161 2004-05-17  Radek Doulik  <rodo@ximian.com>
23162
23163         * Makefile.am (common_sources): added abcremoval.h so it get
23164         disted and daily mono packages on go-mono.com will build again
23165
23166 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23167
23168         * abcremoval.c: Fixed coding style, added copyright header.
23169
23170         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23171
23172         * mini.h: Added prototype for abc removal main function.
23173
23174         * build_relations_propagation_table.pl: Added copyright header.
23175
23176 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23177
23178         * basic-long.cs: reg test for complex ceq_long bug.
23179
23180 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23181
23182         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23183         reg in long and clob case (bug #58343). Fixed/added comments.
23184
23185 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23186
23187         * mini.c (mono_jit_runtime_invoke): Follow new convention
23188         of calling the invoke method with an function pointer.
23189
23190 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23191
23192         * ChangeLog: Fix author of memory leak patch.
23193
23194 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23195
23196         * Makefile.am: fix make dist as well...
23197
23198
23199 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23200
23201         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23202         on archs where pointers are 4 bytes long.
23203
23204         * Makefile.am: Added abcremoval.c source file.
23205
23206         * abcremoval.c: Added abcremoval.c.
23207
23208         * abcremoval.h: Added abcremoval.h.
23209
23210         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23211
23212         * inssel.brg: Enabled bounds check removal.
23213
23214         * mini.c: Added support for abcrem optimization.
23215
23216         * mini.h: Added abcrem optimization label.
23217
23218         * driver.c: Added support for abcrem optimization.
23219
23220         * propagated_relations_table.def: Added propagated_relations_table.def.
23221
23222 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23223
23224         * mini.c, cfold.c: fix style.
23225
23226 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23227
23228         * mini.c: handle issue with the low-level implementation of
23229         some long opcodes (bug #54209).
23230
23231 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23232
23233         * basic.cs: test for my new cmov stuff.
23234
23235 2004-05-13      Patrik Torstensson
23236
23237         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23238         opt and added peephole documentation.
23239
23240 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23241
23242         * tramp-ppc.c: rewrote the generic trampoline code.
23243
23244 2004-05-11      Patrik Torstensson
23245
23246         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23247
23248 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23249
23250         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23251
23252         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23253         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23254
23255         * mini.c: Add new icalls for AsAny marshalling.
23256
23257 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23258
23259         * tramp-ppc.c, mini-ppc.c: more cleanups.
23260
23261 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23262
23263         * mini.c: no warnings.
23264
23265 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23266
23267         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23268
23269 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23270
23271         * mini.c: In the thread abort signal handler, if the thread is in the
23272         process of being stoped, don't throw the Abort exception, just stop the
23273         thread.
23274
23275 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23276
23277         * tramp-ppc.c: removed old code.
23278
23279 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23280
23281         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23282         do some simple speed optimizations on ppc.
23283
23284 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23285
23286         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23287         and large offsets in load/store.
23288
23289 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23290
23291         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23292         it causes regressions.
23293
23294 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23295
23296         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23297         support.
23298
23299 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23300
23301         * jit-icalls.c: remove warnings.
23302         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23303         speedups for unsafe code.
23304
23305 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23306
23307         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23308
23309 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23310
23311         * basic-calls.cs: Add new regression test.
23312
23313         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23314         more portable.
23315
23316         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23317
23318         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23319         is no longer used.
23320
23321 2004-05-06      Patrik Torstensson
23322
23323         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23324         long reg allocation in any reg (not only eax:edx) and implemented 
23325         long shl/shr ops in asm instead of helpers.
23326
23327 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23328
23329         * mini-sparc.h: Fix warnings.
23330
23331         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23332         stack.
23333
23334         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23335         separate statement for clarity.
23336
23337         * mini-sparc.c: Update status.
23338
23339 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23340
23341         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23342         here.
23343
23344 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23345
23346         * inssel-ppc.brg: another small pre-release workaround:
23347         we don't do overflow detection for long_sub_un.
23348
23349 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23350
23351         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23352         (also works around a weird ppc bug: 57957).
23353
23354 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23355
23356         * tramp-ppc.c: trampoline fixes.
23357
23358 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23359
23360         * mini-ppc.c: fixed typos.
23361
23362 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23363
23364         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23365         at the top of the stack. Fixed typos. Use a frame registers
23366         for all the methods with exception clauses.
23367
23368 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23369
23370         * exceptions-ppc.c: restore fp registers.
23371
23372 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23373
23374         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23375         order from the stack top (moved the stack room to save the
23376         return value for trace after the param area). Fixed corruption
23377         in restoring registers on unwind.
23378
23379 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23380
23381         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23382
23383 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23384
23385         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23386         and prolog/epilog for methods that use it. Allow
23387         enough param area room for varargs methods. Fix miguel's
23388         breakage in exception handling.
23389
23390 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23391
23392         * Makefile.am: run genmdesc only on current arch.
23393
23394 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23395
23396         * exceptions-x86.c:
23397         * mini-x86.h: fix the build on windows.
23398
23399 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23400
23401         * 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.
23402
23403         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23404
23405         * mini-exceptions.c: New file.
23406         
23407         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23408         Move some parts of the x86 exception handling code to an 
23409         arch-independent file so it can be shared with other ports.
23410
23411 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23412
23413         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23414
23415 2004-04-26  David Waite  <mass@akuma.org>
23416
23417         * driver.c: remove comma from end of enumeration declaration
23418
23419 2004-04-26  Jackson Harper  <jackson@ximian.com>
23420
23421         * driver.c: parse config file before loading first assembly. This
23422         allows the user gac to be enabled/disabled. 
23423         
23424 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23425
23426         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23427         simpler mechanism: we do not care what is encoded initially
23428         (branch absolute or relative), we care about the code and its
23429         target.  I kept the old code for reference for now.
23430
23431         The new code tries first to determine if the jump is anywhere in
23432         the -/+32 absolute meg range, if it succeeds, it encodes using the
23433         absolute branch;  If not, it tried to find something in the
23434         relative range, if not, it uses the handle_thunk code. 
23435
23436 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23437
23438         * exceptions-ppc.c: use the correct ip register on macosx.
23439
23440 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23441
23442         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23443
23444 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23445
23446         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23447         Raise exception on integer divide by zero by hand since the hw
23448         doesn't support it. Handle NaNs in FP compares.
23449
23450 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23451
23452         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23453         code reducing duplication between the platforms and enabled
23454         signal exception handling (on linux for now).
23455
23456 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23457
23458         * exceptions-ppc.c: more macosx support.
23459
23460 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23461
23462         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23463
23464 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23465
23466         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23467
23468 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23469
23470         * iltests.il: more tests.
23471
23472 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23473
23474         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23475         vars as well.
23476
23477 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23478
23479         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23480
23481 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23482
23483         * liveness.c: Mark variables as volatile in all basic blocks reachable
23484         from exception clauses.
23485
23486 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23487
23488         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23489         inlining.
23490
23491 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23492
23493         * iltests.il, basic.cs: more tests for regalloc.
23494
23495 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23496
23497         * iltests.il: Some tests for register allocation modifications
23498         I have locally.
23499
23500 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23501
23502         * exceptions.cs: Add regression test for bug #56782.
23503
23504         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23505         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23506         the beauty of fixing the same thing in 5 different files...
23507
23508 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23509
23510         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23511         methods.
23512
23513 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23514
23515         * mini.c: Add support for STRWLPARRAY marshalling convention.
23516
23517 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23518
23519         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23520         to init the context to setup the regs pointer).
23521
23522 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23523
23524         * exceptions-ppc.c: more exceptions work.
23525
23526 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23527
23528         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23529         not allowed.
23530
23531 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23532
23533         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23534         can use the memory directly.
23535
23536         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23537
23538         add x86_add_membase, x86_sub_membase, x86_mul_membase
23539
23540 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23541
23542         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23543         GENERAL_REGS they were also hardcoded for all PPC ports.
23544
23545         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23546
23547         Remove hard-coded limit for floating point registers, use
23548         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23549
23550         Notice that in MacOS X calling conventions you can fit a lot more
23551         floating point values in registers, so I should update the PInvoke
23552         test to excercise the passing of floating point values on the
23553         stack (currently broken).
23554         
23555 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23556
23557         * tramp-ppc.c (create_trampoline_code): Added
23558         JUMP_TRAMPOLINE_SIZE. 
23559         (ppc_magic_trampoline): Follow the pattern from
23560         x86_magic_trampoline: if code is set to zero, return. 
23561         (create_trampoline_code): Always pass MonoMethod to the jump
23562         trampoline, before it was passing a null.
23563         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23564         share the code with mono_arch_create_jit_trampoline. 
23565
23566         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23567         implemented.
23568         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23569         implemented.  
23570
23571         * cpu-g4.md: Added length for jmp instruction, the worst case
23572         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23573         for save_lmf).
23574
23575 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23576
23577         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23578
23579 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23580
23581         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23582         before each IL instruction.
23583
23584         * mini.c (CEE_BOX): Fix warnings.
23585
23586 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23587
23588         * mini.c: removed a few unused vars and extra whitespace.
23589
23590 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23591
23592         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23593         checks.
23594         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23595         index.
23596         (OP_GETCHR): use the above
23597         (CEE_LDELEMA): use the above.
23598
23599         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23600         version of the generic impl.
23601         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23602         (CEE_LDELEMA): use the above.
23603
23604 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23605
23606         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23607         Fixes #56317.
23608
23609         * iltests.il: Added new regression test for #56317.
23610
23611 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23612
23613         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23614         under NetBSD. Fixes #56450.
23615
23616         * liveness.c (update_gen_kill_set): Fix previous patch.
23617
23618 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23619
23620         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23621
23622 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23623
23624         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23625         ldsfld and ldsflda.
23626
23627         * inssel-sparc.brg: Add more optimizations.
23628
23629         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23630
23631 2004-04-01  Martin Baulig  <martin@ximian.com>
23632
23633         * mini.c (handle_box): New static function; moved the
23634         implementation of CEE_BOX here.
23635         (mono_method_to_ir): Added `constrained_call' variable.
23636         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23637         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23638         mono_method_get_constrained() to get the method.
23639
23640 2004-04-01  Martin Baulig  <martin@ximian.com>
23641
23642         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23643         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23644         (mono_method_to_ir): We don't need these macros anymore since
23645         mono_class_get_full() already takes care of it. 
23646
23647 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23648
23649         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23650         use @function (as doesn't accept #function here) and check the return
23651         value of system and stop if fails.
23652
23653 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23654
23655         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23656
23657 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23658
23659         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23660
23661         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23662
23663         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23664         #56223.
23665
23666         * basic-long.cs: Add test for negation of Int64.MinValue.
23667
23668 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23669
23670         * mini-sparc.c: Update status.
23671
23672         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23673
23674         * exceptions-sparc.c: Fix return value in filters.
23675
23676         * inssel-sparc.brg: Fix register allocation in some rules.
23677
23678 2004-03-28  Martin Baulig  <martin@ximian.com>
23679
23680         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23681         if neccessary.  
23682
23683 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23684
23685         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23686         
23687         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23688         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23689         remove unused conv_u4 opcode.
23690
23691         * mini-x86.c: Remove valgrind workaround since it slows down things
23692         even when mono is not run under valgrind.
23693
23694 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23695
23696         * mini-sparc.c: Update status.
23697
23698         * inssel-sparc.brg: Add some optimizations.
23699
23700         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23701         future delay slot filling. Add support for varargs, tail calls and JMP.
23702
23703         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23704         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23705
23706         * inssel.brg: Fix register allocation in OP_ARGLIST.
23707
23708         * inssel.brg: Fix warnings.
23709
23710 2004-03-25  Martin Baulig  <martin@ximian.com>
23711
23712         * mini.c (inflate_generic_field): Removed.
23713         (mini_get_method): Removed, use mono_get_method_full(),
23714         (mini_get_class): Removed, use mono_class_get_full().
23715         (mono_method_to_ir): Pass our generic context to
23716         mono_field_from_token().        
23717
23718 2004-03-25  Martin Baulig  <martin@ximian.com>
23719
23720         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23721         of a `MonoMethod *'.
23722         (mini_get_method): Take a `MonoGenericContext *' instead
23723         of a `MonoMethod *'.
23724         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23725         a new local variable called `generic_context' which holds the
23726         current `MonoGenericContext *'; use it to lookup things.
23727
23728 2004-03-24  Martin Baulig  <martin@ximian.com>
23729
23730         * mini.c (mini_get_class): New static method; if we're inside a
23731         generic instance, inflate the class if neccessary.
23732         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23733
23734 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23735
23736         * iltests.il: New regression test for #55976.
23737
23738         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23739         #55976.
23740
23741 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23742
23743         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23744         output.
23745
23746 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23747
23748         * liveness.c: Consider SSA stores as well as loads when making vars
23749         volatile.
23750
23751         * exceptions.cs: New regression tests for register allocation.
23752         
23753 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23754
23755         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23756         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23757           domain lock only to protect puntual access to data structures.
23758           Added access lock for sighash, jit_icall_hash_name, 
23759           jit_icall_hash_addr and domain->code_mp.
23760
23761 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23762
23763         * driver.c: Print SIGSEGV handling method.
23764
23765         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23766
23767         * mini.c (setup_jit_tls_data): Handle case when this is called
23768         multiple times for a thread.
23769
23770         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23771         is different from fbxx_un. Fixes #54303. Also use constants instead of
23772         magic numbers in a lot of places.
23773
23774 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23775
23776         * exceptions.cs: Fix cctor test when --regression is used.
23777
23778 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23779
23780         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23781         for Linux/ppc.
23782
23783 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23784
23785         * inssel-ppc.brg: fixed register assignments for some rules.
23786
23787 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23788
23789         * exceptions.cs: Add test for exceptions in static constructors.
23790
23791         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23792         static constructors outside the domain lock. Fixes #55720.
23793
23794 2004-03-17  Martin Baulig  <martin@ximian.com>
23795
23796         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23797         (inflate_generic_field): Take the `MonoMethod *' instead of the
23798         `MonoClass *' and added support for generic method.
23799         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23800         have a `field->parent->gen_params', only inflate the field if it's
23801         an open constructed type.
23802
23803 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23804
23805         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23806         exception object instead of the preconstructed ones.
23807
23808 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23809
23810         * mini.c: reverted changed to sigsegv_signal_handler commited
23811         accidentally in the previous patch.
23812
23813 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23814
23815         * mini.c:
23816         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23817         running --aot with an old assembly.
23818
23819 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23820
23821         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23822         point values.
23823
23824         * mini-sparc.c: Add support for v9 branches with prediction.
23825
23826 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23827
23828         * mini.c (mini_init): #warning is GNUC only
23829
23830         * mini-sparc.h: implement __builtin_frame_address
23831         and __builtin_return_address for Sun C compiler
23832
23833 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23836
23837 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23838
23839         * basic-calls.cs: Add test for unaligned byref long argument passing.
23840
23841         * mini-ops.h: Add sparcv9 compare and branch instructions.
23842
23843         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23844         v9 instructions if we have a v9 cpu.
23845
23846         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23847         registers for global allocation.
23848
23849         * exceptions-sparc.c: Fixes.
23850         
23851 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23852
23853         * liveness.c (mono_analyze_liveness): Optimized version.
23854
23855         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23856
23857         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23858         sparc work.
23859
23860         * basic-float.cs basic-calls.cs: New regression tests.
23861
23862 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23863
23864         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23865         sigaltstack implementation.
23866
23867         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23868         
23869         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23870         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23871
23872 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23873
23874         * mini.c: Fix warnings.
23875         
23876         * mini.c (mono_resolve_patch_target): New function which contains the
23877         arch independent part of the patching process.
23878
23879         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23880         patching code to a separate function.
23881
23882 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23883
23884         * mini.c (add_signal_handler): ifdef out on Windows
23885
23886 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23889         cpu-sparc.md: Add exception handling support + other fixes.
23890
23891         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23892         typed GC detection in --version.
23893
23894         * basic.cs exceptions.cs: New regression tests.
23895
23896         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23897         the arch specific code can store data during a compilation.
23898
23899         * mini-ops.h: Add OP_SETFRET.
23900
23901         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23902         function, register a separate icall for each arity, so the icalls can
23903         get a wrapper.
23904         
23905         * mini.c (mono_print_tree): Print negative offsets in a more readable
23906         form.
23907         
23908         * mini.c: Make signal handling work on sparc.
23909         
23910         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23911
23912         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23913
23914         * jit-icalls.c: Emulate truncl by aintl on solaris.
23915
23916         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23917
23918 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23919
23920         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23921
23922 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23923
23924         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23925         a MarshalByRef type, inline a method that performs the check, taking into
23926         account that the object can be a proxy. Also implemented tow new opcodes:
23927         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23928         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23929         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23930
23931 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23932
23933         * mini-ppc.c: if a relative branch displacement is too big
23934         but it points to and area reachable with an absolute branch, 
23935         avoid the thunks.
23936
23937 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23938
23939         * mini.c: optimize small copies in cpblk.
23940
23941 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23942
23943         * basic-calls.cs basic-float.cs: New regression tests.
23944
23945         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23946         negative offsets from %fp. Implement localloc. Fix local register 
23947         allocation. Fix the case when the this argument needs to be saved to
23948         the stack. Implement some missing opcodes.
23949
23950 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23951
23952         * mini.c (mini_method_compile): Reenable global regalloc in methods
23953         with exception handlers.
23954
23955         * linear-scan.c (mono_varlist_sort): Fix warning.
23956
23957         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23958
23959         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23960         regalloc costs.
23961
23962         * liveness.c: Make all variables uses in exception clauses volatile, to
23963         prevent them from being allocated to registers. Fixes #42136.
23964
23965 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23966
23967         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23968         causes regressions.
23969
23970         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23971         argument to mono_arch_regalloc_cost.
23972
23973         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23974         precisely.
23975
23976 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23977
23978         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23979         Make the cost of allocating a variable to a register arch dependent.
23980
23981         * basic-calls.cs: Fix compilation of tests.
23982         
23983         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23984         helper function to cut back on the number of #ifdefs needed.
23985
23986         * mini-ppc.c: Fix compilation.
23987
23988         * basic-calls.cs: New regression tests.
23989
23990         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23991
23992         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23993         of l0 since that is callee saved.
23994
23995         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23996         to virtual calls.
23997
23998         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23999         of delay instruction.
24000
24001         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24002
24003         * mini.h (MonoCallInst): Add 'virtual' flag.
24004
24005         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24006
24007 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24008
24009         * *.cs: New regression tests.
24010
24011         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24012         work.
24013
24014         * mini.c (mono_runtime_install_handlers): Fix build.
24015
24016         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24017         'signal_stack_size' members.
24018
24019         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24020         alternate signal stack.
24021
24022         * exceptions-x86.c: Add stack overflow handling.
24023
24024         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24025         functions to arch independent code.
24026
24027         * mini.c (mono_print_tree): Print more detailed info for load_membase
24028         opcodes.
24029         
24030 2004-02-23  Martin Baulig  <martin@ximian.com>
24031
24032         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24033
24034 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24035
24036         * mini-x86.c: fixed reg allocation for div/rem.
24037
24038 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24039
24040         * driver.c (mono_main): Report some configuratio options on --version.
24041
24042 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24043
24044         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24045         low in the address space. Correctly flush memory in thunks where we
24046         output native code.
24047
24048 2004-02-20  Martin Baulig  <martin@ximian.com>
24049
24050         * mini.c (mini_get_method): New static method; inflate all generic
24051         methods and methods in open generic instances.
24052         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24053         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24054
24055 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24056
24057         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24058
24059         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24060
24061 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24062
24063         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24064
24065         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24066         it compile using Sun's compiler.
24067
24068 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24069
24070         * 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.
24071
24072         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24073
24074 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24075
24076         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24077         code.
24078         * mini-ppc.c: handle calls outside of the allowed range with thunks
24079         allocated using the code manager.
24080         * tramp-ppc.c: use the code manager to hold generated native code.
24081         Fixed the magic trampoline to just patch vtable entries.
24082
24083 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24084
24085         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24086         independent file.
24087
24088 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24089
24090         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24091         PPC.
24092
24093         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24094         if we have a working __thread implementation.
24095
24096         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24097         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24098
24099 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24100
24101         * mini-x86.c: Fix compilation under gcc 2.
24102         
24103 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24104
24105         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24106         contains a call to the wrapped function.
24107
24108         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24109         OP_<CALL>_IMM opcodes, and use them under X86.
24110         
24111         * mini.c (mono_jit_find_compiled_method): Fix warning.
24112
24113         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24114
24115         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24116
24117         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24118         functionality to mini.c.
24119
24120         * mini.c (mono_create_jump_trampoline): New function to create a jump
24121         trampoline. Return a compiled method instead of a trampoline if it
24122         exists. Add a cache for jump trampolines.
24123
24124         * mini.c (mono_jit_find_compiled_method): New function to return a
24125         compiled method if it exists.
24126
24127         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24128         mono_arch_create_jit_trampoline.
24129
24130         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24131         a jump trampoline. Fixes #52092.
24132         
24133 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24134
24135         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24136         which is not up-to-date. Add check_corlib_version () instead.
24137
24138         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24139         have to call it.
24140         
24141         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24142         since newer valgrind versions do not need it.
24143
24144         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24145         compile a method with a given set of optimizations.
24146
24147         * mini.c: Compile icall wrappers on-demand instead of at startup.
24148
24149         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24150         wrapper for an icall.
24151
24152 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24153
24154         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24155         #54063.
24156
24157         * iltests.il: Add test for non-empty stack before switch instruction.
24158
24159 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24160
24161         * mini.c: Add support for new stringbuilder marshalling conventions.
24162
24163         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24164
24165 2004-02-01  Martin Baulig  <martin@ximian.com>
24166
24167         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24168         in `ginst->mtype_argv'.
24169
24170 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24171
24172         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24173         facilitate grepping.
24174
24175 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24176
24177         * mini.c: fixed buglet in initobj generic implementation for references.
24178
24179 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24180
24181         * Makefile.am: make the version script conditional.
24182         * jit-icalls.c: handle missing truncl().
24183
24184 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24185
24186         * exceptions.cs: Add more tests for double->int conversion.
24187
24188         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24189         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24190
24191 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24192
24193         * driver.c: make --verbose --version emit an error
24194         if the loaded corlib doesn't match the runtime version.
24195
24196 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24197
24198         * mini-ppc.h: export ppc_patch().
24199         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24200         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24201         on par or better than on MacOSX.
24202
24203 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24204
24205         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24206         mono_lookup_pinvoke_call.
24207
24208         * mini-x86.c: Under windows, the default pinvoke calling convention is
24209         stdcall. Fixes #52834.
24210
24211         * mini.c (optimize_branches): Add an upper bound to the number of
24212         iterations to prevent infinite loops on strange loops. Fixes #53003.
24213
24214 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24215
24216         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24217         and ISINST. Fixes #52093.
24218
24219         * objects.cs (test_0_vector_array_cast): New tests.
24220         
24221 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24222
24223         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24224         checking in Array.Set ().
24225
24226         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24227         #52590.
24228
24229         * object.cs (test_0_multi_array_cast): New regression test.
24230
24231 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24232
24233         * exceptions-ppc.c: fix build on Linux/PPC.
24234
24235 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24236
24237         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24238         running under valgrind.
24239         (x86_magic_trampoline): Fix build bustage.
24240
24241         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24242         negative values as well. This is needed for the encoding of the line number
24243         info, since sometimes the line numbers are not in increasing order.
24244
24245 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24246
24247         * cpu-pentium.md (localloc): Increase the size of the localloc 
24248         instruction since it is a loop under Win32.
24249
24250         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24251         allocation.
24252
24253 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24254
24255         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24256         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24257         Max Horn (max@quendi.de). Fix file names in comments.
24258
24259 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24260
24261         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24262         avoid stack overflow.
24263         (replace_usage): Avoid uninitialized variable warnings.
24264
24265         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24266         and taking the address of valuetype variables.
24267
24268 2004-01-03  Patrik Torstensson
24269
24270         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24271         for other purposes than FP later on.
24272
24273 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24274
24275         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24276         of tail calls.
24277
24278 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24279
24280         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24281
24282 2003-12-30  Patrik Torstensson <p@rxc.se>
24283
24284         * mini-x86.h: Decreased number of availiable fp regs.
24285         Solves corner cases with FP spilling.
24286
24287 2003-12-23  Patrik Torstensson <p@rxc.se>
24288
24289         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24290         for floating point stack tracking / spilling on x86. 
24291         Fixes bug #49012.
24292         
24293         * basic-float.cs: added float mul overflow test.
24294
24295 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24296
24297         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24298
24299 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24300
24301         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24302         supports for cond branches that overflow the immediate
24303         overflow offset. mcs can compile simple programs.
24304
24305 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24306
24307         * exceptions-ppc.c: exception handling support wip:
24308         finally handlers get run on exception.
24309
24310 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24311
24312         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24313         profiling.
24314
24315 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24316
24317         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24318         initial support for stack walking and unwinding.
24319
24320 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24321
24322         * driver.c (mono_main): Make corlib-out-of-sync message more 
24323         descriptive. Also remove verify_corlib call.
24324
24325 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24326
24327         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24328         not overlap with other call's arguments, too.
24329
24330 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24331
24332         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24333         move to arch-specific code the choice of arch-specific
24334         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24335         * mini.c: ensure emulation calls will not interleave
24336         with other calls.
24337
24338 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24339
24340         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24341         the magic trampoline stack frame is dropped before executing
24342         the new method.
24343
24344 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24345
24346         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24347         and integer to fp conversions. Added support for overflowing
24348         arguments on the stack. Reserve a couple more registers as temps.
24349         Added support for aot compilation (as output still needs to be
24350         tweaked, though).
24351
24352 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24353
24354         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24355         Don't overwrite return register in some corner cases.
24356
24357 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24358
24359         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24360         static constructors when AOT compiling.
24361
24362         * driver.c (mono_main): Call mono_check_corlib_version.
24363
24364 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24365
24366         * cpu-g4.md, basic.cs: fixed div target register.
24367
24368 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24369
24370         * mini-ppc.c, basic.cs: shl_imm fix with test.
24371
24372 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24373
24374         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24375         structures by value. Misc fixes.
24376         * objects.cs: more tests.
24377
24378 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24379
24380         * mini-ppc.c: lconv.ovf.i implemented.
24381
24382 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24383
24384         * mini.c:
24385         (mini_init): don't error out if someone already called g_thread_init.
24386
24387 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24388
24389         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24390         to be any type per the spec. Fix abnormal memory usage when
24391         the same object is repeatedly thrown.
24392
24393 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24394
24395         * mini.c: check for overruns in IL code.
24396
24397 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24398
24399         * TODO: Add/remove some todo entries.
24400
24401 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24402
24403         * driver.c (mono_main): Call mono_verify_corlib.
24404
24405 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24406
24407         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24408         This has been moved to mini.c
24409         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24410         type being casted is marshalbyref it could be a proxy, so instead of
24411         emitting the type check code, emit a call to a runtime method that will
24412         perform the check by calling CanCastTo if needed.
24413
24414 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24415
24416         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24417         methods with large stack frames under Win32.
24418
24419 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24420
24421         * Makefile.am: Distribute regression tests.
24422
24423         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24424         at the end instead of inserting each variable into the sorted list.
24425
24426         * linear-scan.c (mono_varlist_sort): New helper function.
24427         
24428 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24429
24430         * mini.c: ensure arguments and locals are within bounds.
24431
24432 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24433
24434         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24435         related fixes.
24436
24437 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24438
24439         * mini.c (mono_cprop_copy_values): Fix crash.
24440
24441         * aot.c: Set verbosity back to 0.
24442         
24443 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24444
24445         * regalloc.c: complete memory leak fix by Laurent Morichetti
24446         (l_m@pacbell.net).
24447
24448 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24449
24450         * driver.c (main_thread_handler): Revert the previous patch.
24451
24452         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24453         under valgrind.
24454
24455         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24456         memory from the memory pool.
24457
24458         * driver.c (main_thread_handler): Turn on all optimizations when
24459         --aot is used.
24460
24461         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24462         an array for better performance.
24463
24464         * regalloc.c (mono_regstate_assign): Fix memory leak.
24465
24466         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24467         serialize the debug info.
24468
24469         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24470         debug info from the serialized representation.
24471
24472         * aot.c: Save debug info into the generated file and load it when 
24473         loading a method.
24474
24475         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24476
24477 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24478
24479         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24480         More FP-related fixes.
24481
24482 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24483
24484         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24485         and register allocation buglet. Hello world now runs.
24486
24487 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24488
24489         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24490         * tramp-ppc.c: fixed class init trampoline.
24491         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24492
24493 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24494
24495         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24496         mini.c: more ppc changes/fixes.
24497
24498 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24499
24500         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24501         Also optimize the case when the arguments are the same in the caller 
24502         and in the callee.
24503
24504         * iltests.il: Add tests for tail calls with valuetype arguments.
24505
24506 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24507
24508         * mini-ppc.c: fixes for struct return type.
24509
24510 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24511
24512         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24513         mono_spillvar_offset() to arch-specific code.
24514
24515 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24516
24517         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24518
24519 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24520
24521         * exceptions-x86.c: Fix stack space leaks.
24522         
24523         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24524         registers from the lmf if the method has save_lmf set.
24525
24526 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24527
24528         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24529         of icall wrappers into InvokeInDomain, since these are now per-domain.
24530
24531 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24532
24533         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24534         make some opcode emulation and intrinsic ops enabled/disabled 
24535         according to the architecture. More fixes.
24536
24537 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24538
24539         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24540
24541 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24542
24543         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24544         arch-specific handling for 'this' and struct return type to
24545         arch-specific code.
24546
24547 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24548
24549         * aot.c: prevent divide by zero error when reporting (it happened with
24550         Accessibility.dll).
24551
24552 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24553
24554         * mini.h (inst_switch): Remove unused macro.
24555
24556 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24557
24558         * aot.c:
24559         (load_aot_module): free 'info->methods' and 'info' properly. No more
24560         "free(): invalid pointer blah" messages when you have an old aot
24561         compiled assembly.
24562
24563 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24564
24565         * jit-icalls.c, mini.c: Added support for context static fields.
24566
24567 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24568
24569         * mini.c (mono_method_blittable): Methods which set LastError are not 
24570         blittable either. Fixes #51108.
24571         
24572 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24573
24574         * mini.c: flush icache.
24575         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24576
24577 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24578
24579         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24580
24581 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24582
24583         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24584         safe on IA32.
24585
24586         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24587         vararg calls.
24588
24589         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24590
24591 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24592
24593         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24594         instruction when the result is discarded.
24595
24596         * iltests.il (test_0_div_regalloc): New regression test.
24597
24598         * arrays.cs: Fix compilation error.
24599
24600 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24601
24602         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24603         float rules to inssel-x86.brg: sane architectures with FP registers
24604         don't need to implement these rules.
24605
24606 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24607
24608         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24609
24610 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24611
24612         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24613         implementation of 32 bit systems.
24614
24615 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24616
24617         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24618         (Jeroen Zwartepoorte).
24619
24620 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24621
24622         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24623         the caller and the callee matches.
24624         
24625         * mini.c (mono_method_to_ir): Add comment.
24626
24627         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24628         signbit is missing on some platforms.
24629
24630 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24631
24632         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24633
24634         * mini.c (setup_jit_tls_data): Call the new function.
24635         
24636         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24637
24638         * mini-x86.c: Add experimental support for fast access to the lmf
24639         structure under NPTL/Linux 2.6.x.
24640
24641 2003-11-06  Martin Baulig  <martin@ximian.com>
24642
24643         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24644         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24645         the debugger.
24646
24647 2003-11-02  Martin Baulig  <martin@ximian.com>
24648
24649         * mini.c (inflate_generic_field): New static method.
24650         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24651         generic instance and the field is declared in a generic type, call
24652         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24653
24654 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24655
24656         * mini.h mini.c (mono_method_same_domain): New function to return
24657         whenever the caller and the callee are in the same domain.
24658
24659         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24660
24661 2003-10-30  Martin Baulig  <martin@ximian.com>
24662
24663         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24664         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24665         method parameters.
24666         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24667         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24668
24669 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24672         propagation.
24673
24674         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24675         object here, so it is in the correct appdomain etc.
24676
24677 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24678
24679         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24680         already done.
24681         (mono_method_to_ir): Avoid freeing the type created returned from
24682         mono_type_create_from_typespec, since it is put into an internal cache
24683         by the function. Fixes pointer.exe.
24684
24685         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24686         trampolines for icalls and pinvokes as well. Fixes #33569.
24687
24688 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24689
24690         * mini.c: Update after appdomain changes.
24691
24692         * mini.c (mono_jit_compile_method_inner): Allways compile native
24693         method wrappers in the root domain, since there can only be one
24694         instance of them, whose address is stored in method->info.
24695
24696 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24697
24698         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24699         environment variable. Instead detect automatically whenever running
24700         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24701         valgrind.h.
24702
24703 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24704
24705         * trace.c, trace.h: New files that implement the new trace option
24706         parsing. 
24707
24708         * driver.c: Document new --trace options.
24709
24710         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24711         mini-x86.c: Apply:
24712
24713         -       if (mono_jit_trace_calls)
24714         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24715
24716         * mini.h: prototypes.
24717         
24718 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24719
24720         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24721
24722         * mini.c inssel.brg: Implement typedefbyref opcodes.
24723
24724         * mini.c (mono_jit_compile_method): Remove unused local variable.
24725
24726         * mini.c (mono_jit_compile_method_inner): Ditto.
24727         
24728 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24729
24730         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24731         
24732         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24733
24734 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24735
24736         * mini.c (mono_no_aot): Remove unused global variable.
24737
24738         * mini.c: Thread safety fixes.
24739
24740 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24741
24742         * mini.c (mono_create_class_init_trampoline): Add a lock around
24743         class_init_hash_addr.
24744
24745         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24746         #30073.
24747
24748         * mini.c: Decompose the NEWARR instruction before decomposing its
24749         arguments. Fixes #30073.
24750
24751 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24752
24753         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24754         convention.
24755
24756 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24757
24758         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24759
24760         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24761
24762         * driver.c: Add support for compiling icall wrappers to --compile.
24763
24764 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24765
24766         * inssel.brg: The empty value in class->interface_offsets is -1, not
24767         0. Fixes #49287.
24768
24769 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24770
24771         * objects.cs: New test for 'is' operator on an array of interfaces.
24772
24773 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24774
24775         * tramp-ppc.c: update trampoline code to support jumps
24776         and class initialization.
24777
24778 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24779
24780         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24781
24782         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24783
24784         * inssel.brg (OP_UNBOX): Remove unused rule.
24785
24786         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24787         region instead of one for each method. Fixes #47813.
24788
24789 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24790
24791         * exceptions.cs (test_0_nested_finally): New regression test for
24792         nested exception handlers.
24793
24794         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24795
24796         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24797
24798         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24799         inlining.
24800
24801         * mini.c (mono_method_check_inlining): Make the inlining limit 
24802         configurable by an environment variable.
24803         
24804         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24805
24806         * mini.h: Bump AOT file version.
24807
24808         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24809         token, store the image along with the token, since the token might not 
24810         refer to the same image as the method containing the relocation, 
24811         because of inlining.
24812
24813 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24814
24815         * mini.c (mono_precompile_assemblies): New function to compile
24816         all methods in all loaded assemblies.
24817
24818         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24819
24820         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24821         iassign and fassign to int*, since they can contain large negative
24822         values if the register is spilled. Also added some comments. Fixes
24823         #45817.
24824
24825         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24826         under Win32. Fixes #42964.
24827
24828 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24829
24830         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24831
24832         * aot.c: Added support for AOT compiling methods which contain calls
24833         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24834         handled.
24835         
24836         * driver.c (compile_all_methods): Run the compilation in a thread
24837         managed by mono. Fixes #44023.
24838
24839         * mini.c (mono_codegen): Print full method name in verbose output.
24840
24841         * mini-x86.c (mono_arch_patch_code): Fix warning.
24842         
24843         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24844         jumps, since the method we are jumping to might be domain-specific.
24845
24846         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24847
24848 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24849
24850         * inssel.brg: string chars are unsigned.
24851
24852 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24853
24854         * TODO: New todo item.
24855
24856         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24857         which calls mono_runtime_class_init and patches the call site to
24858         avoid further calls.
24859         (mono_arch_create_class_init_trampoline): New arch specific function 
24860         to create a class init trampoline.
24861         (create_trampoline_code): Generalized so it can create
24862         class init trampolines as well.
24863
24864         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24865         (mono_create_class_init_trampoline): New function to create and cache
24866         class init trampolines.
24867         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24868         vtable given the address of a class init trampoline. Used by the
24869         patching process.
24870         (mono_codegen): Generate a call to a trampoline instead of
24871         mono_runtime_class_init in LDSFLD[A].
24872         (mono_codegen): Add relocations for the new trampoline.
24873         
24874         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24875         MONO_PATCH_INFO_CLASS_INIT.
24876
24877         * mini.h: Bump AOT version number.
24878
24879         * aot.c: Create a copy of the loaded code instead of using the original
24880         so methods which call each other will be close in memory, improving
24881         cache behaviour.
24882         
24883         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24884         patch since it breaks the regression tests.
24885         
24886         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24887         for the register saving instruction sequence since the 
24888         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24889
24890 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24891
24892         * TODO: Fix todo item && remove another.
24893
24894 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24895
24896         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24897         previous checkin.
24898
24899         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24900         function of the module.
24901
24902         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24903         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24904         --no-aot command line option.
24905
24906 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24907
24908         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24909         by Bernie Solomon (bernard@ugsolutions.com).
24910
24911         * inssel.brg: Refactor the interface offset table related code into
24912         its separate functions and add support for the AOT case.
24913
24914 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24915
24916         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24917         
24918         * aot.c: Added mono_aot_verbose variable and made all debugging
24919         output depend on the value of this variable.
24920
24921         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24922         method_label and info_label.
24923
24924         * mini.h mini-x86.c aot.c: Added a new relocation type 
24925         MONO_PATCH_INFO_IID for klass->interface_id.
24926
24927         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24928         the MonoJitInfo structure.
24929
24930         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24931         a non-root appdomain in shared mode.
24932
24933 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24934
24935         * aot.c: make aot loader less verbose. Remove free of unused variable.
24936
24937 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24938
24939         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24940
24941         * .cvsignore: Added *.dll.
24942
24943         * mini.c (mono_print_tree_nl): New function callable while debugging.
24944
24945         * mini.c (mono_print_code): Export this.
24946
24947         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24948         patched code.
24949
24950 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24951
24952         * mini.h (MonoCompile): Added 'jit_info' field.
24953
24954         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24955         the cfg structure, since it is needed by the AOT compiler.
24956
24957         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24958
24959         * aot.c: A major rewrite. Changes include:
24960         - save exception tables for methods which have them.
24961         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24962         to g_module_symbol.
24963         - reworked the file format so it is now much smaller and needs
24964         fewer relocation entries.
24965         
24966 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24967
24968         * aot.c (load_aot_module): Fix build bustage on platforms without
24969         Boehm GC.
24970
24971 2003-09-04  Martin Baulig  <martin@ximian.com>
24972
24973         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24974
24975 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24976
24977         * TODO: Some new optimization ideas.
24978
24979         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24980
24981         * aot.c: Save the optimization flags used to compile the code into
24982         the AOT module.
24983
24984         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24985         support emitting domain specific code.
24986         
24987         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24988         no longer domain neutral. It can be made domain neutral by compiling 
24989         with --optimize=shared.
24990
24991         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24992         between appdomains.
24993
24994         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24995         loading of AOT code.
24996
24997         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24998         
24999         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25000         if there is no domain neutrality information.
25001
25002 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25003
25004         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25005         format version into the generated library.
25006
25007         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25008         callee method into the caller since one of them could be shared.
25009
25010         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25011         system exceptions from AOT code now works.
25012
25013         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25014         method if it is domain neutral and the callee is not.
25015
25016         * graph.c (cfg_emit_one_loop_level): Fix warning.
25017
25018 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25019
25020         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25021         last checkin.
25022
25023 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25024
25025         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25026         is needed  by code which is executed before mono_runtime_init ().
25027         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25028         
25029         * mini.c (mono_thread_abort): Fix warning.
25030         (mono_jit_compile_method): Call static constructor in the AOT case too.
25031
25032         * aot.c (mono_compile_assembly): Fix warning.
25033
25034 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25035
25036         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25037
25038 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25039
25040         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25041
25042         * cpu-pentium.md: Fix the length of call opcodes so they include the
25043         ESP restoring instruction. Fixes #47968.
25044
25045 2003-08-28  Martin Baulig  <martin@ximian.com>
25046
25047         * mini-x86.c (mono_arch_call_opcode): Added support for
25048         MONO_TYPE_GENERICINST.
25049
25050         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25051
25052 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25053
25054         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25055         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25056
25057         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25058         metadata_section.
25059
25060 2003-08-26  Martin Baulig  <martin@ximian.com>
25061
25062         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25063         when reporting an error, set this to the actual error location.
25064         (mono_method_to_ir): Report the correct error location if
25065         get_basic_blocks() returned an error.
25066
25067 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25068
25069         * mini.c (mono_type_blittable): OBJECT is not blittable.
25070         (mono_method_blittable): Methods which have marshalling descriptors
25071         are not blittable either. Fixes #47842.
25072
25073 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25074
25075         * driver.c mini.c: Use an environment variable instead of a global 
25076         variable. Also fix the build.
25077
25078         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25079         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25080         reporting this. 
25081
25082         * driver.c mini.c: Added --with-valgrind option to turn off some
25083         code which prevents mono from running under valgrind.
25084
25085         * mini.c (mono_emit_call_args): Fixed warning.
25086
25087         * mini.c (mono_emulate_opcode): Fixed warning.
25088
25089 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25090
25091         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25092         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25093         regalloc.c, regalloc.h: specify available registers in arch-specific
25094         code and support floats in the regallocator (patch by Laurent Morichetti 
25095         <l_m@pacbell.net>)
25096
25097 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25098
25099         * mini.c: mono_thread_current() can be called only after
25100         mono_runtime_init(): rearrange code to not call it early on.
25101
25102 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25103
25104         * mini.c: allocate jump tables in the code mempools.
25105
25106 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25107
25108         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25109         freed.
25110
25111 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25112
25113         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25114         12 to 16.  This fixes bug #47453.
25115
25116
25117 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25118
25119         * mini-ppc.c: fixed indexed load and unsigned compares.
25120
25121 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25122
25123         * mini.c: reenabled installation of handler for
25124           thread abort signal.
25125
25126 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25127
25128         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25129         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25130         until it's fixed and actually useful.
25131
25132 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25133
25134         * inssel-long32.brg: couple more opcodes implemented.
25135
25136 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25137         
25138         * mini-sparc.c: Even more opcodes implemeted.
25139
25140 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25141
25142         * mini-sparc.c: More opcodes implemented.
25143
25144 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25145
25146         * mini-sparc.c: More opcodes implemented.
25147
25148 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25149
25150         * inssel-sparc.brg: Add some needed rules.  Direct
25151         copy from PPC.
25152         * Makefile.am: Use inssel-sparc.brg
25153         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25154         an assert happy for now.
25155
25156 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25157
25158         * mini-sparc.c: Fixed compile errors.
25159         * exceptions-sparc.c: Same.  We now produce a mono binary 
25160         on sparc-linux.  Yea.
25161
25162 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25163
25164         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25165         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25166         They compile, but do not work.
25167
25168 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25169
25170         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25171         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25172         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25173         (ct@gentoo.org).
25174
25175 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25176
25177         * mini.c: more opcodes implemented and better support for generics.
25178
25179 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25180
25181         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25182         * mini.c, mini.h: first cut at generics support: some new instructions 
25183         added and changed the behaviour of some of the existing ones.
25184
25185 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25186
25187         * mini.c: Removed definition of metadata_shared mutex here.
25188
25189 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25190
25191         * mini-x86.c: make vararg calls work for instance methods.
25192
25193 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25194
25195         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25196         returns the arguments in a separte list, now.
25197
25198 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25199
25200         * aot.c, mini.c: updates for array type representation changes.
25201
25202 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25203
25204         * mini.c: register function to perform jit shutdown.
25205
25206 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25207
25208         * mini.c: use a faster allocator if possible.
25209
25210 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25211
25212         * aot.c: some cleanups and portability changes.
25213
25214 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25215
25216         * mini.c: use faster allocation for CEE_BOX if possible.
25217
25218 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25219
25220         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25221         Moved inlined mempcy code to its own function so that is can be
25222         reused. Added an inline memset function as well (optimized initobj).
25223         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25224
25225 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25226
25227         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25228
25229 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25230
25231         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25232         arch code can setup the cpu for CLR execution, if needed.
25233         We use it on x86 to set the precision of FP operations.
25234
25235 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25236
25237         * mini.c: disable some optimizations if we can guess they'll cost too
25238         much for a given method.
25239
25240 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25241
25242         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25243         
25244 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25245         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25246         info collection support.
25247
25248 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25249
25250         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25251         is now implemented in the profiling API. Get rid of a couple of
25252         unnecessary global variables.
25253
25254 2003-06-15  Nick Drochak <ndrochak@gol.com>
25255
25256         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25257         * cpu-g4.md: add op_bigmul and op_bigmul_un
25258         * cpu_pentium.md: add op_bigmul_un
25259         * inssel-long32.brg: add rule for unsigned bigmul
25260         * mini-ops.h: define OP_BIGMUL_UN
25261         * mini-x86.c: THE BUG: handle (un)signed properly
25262         * mini.c: choose unsigned opcode if needed.
25263         This set of patches fixes bug #44291
25264
25265 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25266
25267         * mini.c (optimize_branches): improved to handle all kinds of
25268         conditional branches.
25269
25270 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25271
25272         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25273         don't raise exceptions.
25274
25275 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25276
25277         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25278         to arch-specific files.
25279
25280 2003-06-09  Martin Baulig  <martin@ximian.com>
25281
25282         * Makefile.am (libs): Added $(LIBGC_LIBS).
25283
25284 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25285
25286         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25287         and OP_ATAN (fixes bug#44293).
25288
25289 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25290
25291         * Makefile.am, mini-x86.c: rename cpu description array to
25292         pentium_desc, since some compilers define the 'pentium' preprocessor
25293         symbol.
25294
25295 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25296
25297         * mini.c (mini_select_instructions): add explicit branch if the
25298         following block is not the false target of a conditional branch -
25299         we need this with any optimization that reorder or remove bblocks
25300
25301         * mini.c (optimize_branches): bug fixes
25302
25303 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25304
25305         * mini.c (mono_method_to_ir): inline static readonly fields
25306
25307         * ssa.c (fold_tree): start cfold support for long (very simple
25308         cases only)
25309
25310         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25311
25312 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25313
25314         * inssel.brg: fixed memcpy (bug #44219).
25315
25316 2003-06-05  Dick Porter  <dick@ximian.com>
25317
25318         * driver.c: Set the glib log levels to not abort if g_message
25319         recurses.
25320
25321         g_set_prgname() has to happen before mini_init() so that the
25322         process handle gets the info.
25323         
25324 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25325
25326         * driver.c: add intrins to the default optimizations to get wider
25327         exposure.
25328
25329 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25330
25331         * mini.h: some large basic blocks will overflow a 16-bit
25332         integers for symbolic registers.
25333
25334 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25335
25336         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25337         (mono_arch_output_basic_block): fix bug 43499 
25338
25339 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25340
25341         * mini.c: kill duplicated definition of mono_debug_format.
25342
25343 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * mini-x86.c, arrays.cs: fixed register allocation bug.
25346
25347 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25348
25349         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25350
25351         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25352
25353 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25354
25355         * mini.c:
25356         (print_method_from_ip): also print source location information if
25357         available.
25358
25359 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25360
25361         * mini.c (mono_find_block_region): bug fix in region code
25362         (mini_method_compile): enable removing unreachable code again, but
25363         only in methods without exception clauses.
25364
25365 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25366
25367         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25368         Implemented arglist opcode and handling of TypedReference type.
25369         Fixed x86 call convention when a structure is returned.
25370         Minimal support for calling static vararg methods.
25371
25372 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25373
25374         * mini.c (mini_method_compile):  always remove unreachable code,
25375         because the code in them may be inconsistent  (access to dead
25376         variables for example).
25377
25378 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25379
25380         * driver.c, debug-mini.c: warning fixes.
25381
25382 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25383
25384         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25385
25386 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25387
25388         * mini.c: thread-static fields are registered in mono_class_vtable(),
25389         so ensure the function is called before checking for them.
25390
25391 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25392
25393         * mini.c (optimize_branches): fix for bug 43586
25394
25395         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25396         overflow (fixes Bug #43639)
25397
25398 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25399
25400         * mini.c, objects.cs: allow the use of stobj for primitive types.
25401
25402 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25403
25404         * mini.c: be less strict about argument checking until we support
25405         running the verifier.
25406
25407 2003-05-27  Nick Drochak <ndrochak@gol.com>
25408
25409         * basic-long.cs: tests for (ulong)int * (ulong)int also
25410         * mini.c: use the same trick for (ulong)int * (ulong)int
25411
25412 2003-05-27  Nick Drochak <ndrochak@gol.com>
25413
25414         * basic-long.cs: add regression test for (long)int * (long)int
25415         * cpu-pentium.md: add op_bigmul specification
25416         * inssel-long32.brg: add OP_BIGMUL rule
25417         * mini-ops.h: add OP_BIGMUL
25418         * mini-x86.c: register allocator: handle case where src1 needs to be
25419         in EAX.
25420         * mini.c: substitute special BIGMUL opcode in the tree for 
25421         (long)int * (long)int
25422
25423 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25424
25425         * jit-icalls.c: call the type ctor on field access if needed.
25426
25427 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25428
25429         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25430         to a method (including results of ldelema, bug#43207).
25431
25432 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25433
25434         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25435         colors to show exception handler blocks.
25436
25437         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25438         (fix for pinvoke7.cs).
25439
25440 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25441
25442         * mini.h, mini.c: ensure correct initialization order for types that
25443         require it. Prepare for lazy compilation of jit icall wrappers.
25444         Provide a name for opcode emulation to reduce unneeded mallocing.
25445
25446 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25447
25448         * mini-x86.c: better register restoring code and profiling
25449         support for tail calls.
25450
25451 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25452
25453         * mini.h, driver.c: prepare for leaf methods optimization.
25454
25455 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25456
25457         * mini.c: get targets of branches before converting a method.
25458
25459 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25460
25461         * mini.c (optimize_branches): added some experimental code (disbaled) 
25462
25463 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25464
25465         * mini.c (optimize_branches): fix branch to branch optimization 
25466
25467         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25468
25469         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25470
25471         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25472
25473         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25474         if needed.
25475
25476 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25477
25478         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25479         enable use of interface variables again.
25480
25481         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25482         I1 to registers because there is no simply way to sign extend 8bit
25483         quantities in caller saved registers on x86.
25484
25485         * inssel-float.brg: set costs of some rules to 2 so
25486         that monobure always select the arch. specific ones if supplied,
25487         regardless of the order we pass the files to monoburg.
25488
25489 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25490
25491         * mini.c, mini-x86.c: since the magic trampoline for jumps
25492         can't patch the code directly, we do it as soon as the
25493         method gets compiled.
25494
25495 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25496
25497         * mini-x86.c, mini.h: introduce a new patching method
25498         to support CEE_JMP and tail calls.
25499         * mini.c: obey tail.call. Don't precompile methods target
25500         of CEE_JMP.
25501         * tramp-x86.c: new trampoline code to handle methods
25502         reached through a jump.
25503
25504 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25505
25506         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25507         bit values to registers
25508
25509 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25510
25511         * mini.c (mono_compile_get_interface_var): share interface
25512         variables if possible.
25513
25514 2003-05-16  Martin Baulig  <martin@ximian.com>
25515
25516         * debug-mini.c (mono_init_debugger): New function to initialize
25517         the debugger.  This is not in the debugger since it needs to
25518         access some of mini's internals.
25519
25520 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25521
25522         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25523
25524 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25525
25526         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25527         for value type handling.
25528
25529 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25530
25531         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25532         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25533
25534 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25535
25536         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25537           the constructor through a proxy.
25538
25539 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25540
25541         * jit-icalls.c, inssel.brg: fixes to array element address
25542         calculations.
25543
25544 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25545
25546         * mini-x86.c (is_regsize_var): allocate pointer to registers
25547
25548 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25549
25550         * driver.c: fixed typo, added intrins to the set of optimizations
25551         tested with regressions.
25552
25553 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25554
25555         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25556         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25557         test case.
25558
25559 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25560
25561         * inssel.brg: remove some common pop instructions without side effects
25562
25563 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25564
25565         * inssel-x86.brg: fixed thinko in int to double conversions.
25566
25567 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25568
25569         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25570
25571 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25572
25573         * inssel-long32.brg: two more missing instructions.
25574
25575 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25576
25577         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25578         if not already set.
25579
25580 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25581
25582         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25583         correctly.
25584
25585         * basic-float.cs: Added tests for negative zero.
25586
25587 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25588
25589         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25590         a couple of missing operations for long casts, with test cases.
25591
25592 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25593
25594         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25595
25596 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25597
25598         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25599         code size estimation.
25600
25601 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25602
25603         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25604         abstract methods (fix bug 42542)
25605
25606         * aot.c: add ability to handle array types
25607         
25608 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25609
25610         * mini.c: Call the _specific versions of the object allocation
25611         functions if possible.
25612
25613 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25614
25615         * driver.c: call setlocale ().
25616
25617 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25618
25619         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25620         windows build.
25621
25622 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25623
25624         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25625
25626         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25627         wrappers (fix bug 42122)
25628
25629 2003-05-04  Martin Baulig  <martin@ximian.com>
25630
25631         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25632
25633         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25634         s/mini_set_defaults/mono_set_defaults/g.
25635
25636 2003-05-04  Martin Baulig  <martin@ximian.com>
25637
25638         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25639
25640 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25641
25642         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25643         (reported by Don Roberts).
25644
25645 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25646
25647         * mini.c: temporarily work around two bugs for this release.
25648
25649 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25650
25651         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25652         that contains -export-dynamic and it makes using the ld script
25653         useless.
25654         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25655
25656 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25657
25658         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25659         specific cpu.
25660
25661 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25662
25663         * mini.c: make sure leave calls all the needed finally blocks,
25664         even when the target jumps out of multiple exception clauses.
25665
25666 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25667
25668         * ldscript, Makefile.am: add linker script to reduce the number of
25669         exported symbols (should also fix the issues with libwine defining
25670         some of the same symbols in io-layer).
25671
25672 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25673
25674         * driver.c (mini_main): Avoid assertion when no file name is given on 
25675         the command line.
25676
25677 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25678
25679         * driver.c: added --version/-V command line option.
25680         Added the inline optimization in the regression tests.
25681
25682 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25683
25684         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25685         to the type in the method signature (fixes bug#42134).
25686
25687 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25688
25689         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25690
25691 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25692
25693         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25694
25695 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25696
25697         * driver.c: fixed bug #42100.
25698
25699 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25700
25701         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25702
25703 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25704
25705         * mini.c: moved most of the code required to do inlining to its own
25706         function so it can be reused. Inline also ctors if appropriate.
25707
25708 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25709
25710         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25711         the runtime can call mono API functions.
25712
25713 2003-04-27  Martin Baulig  <martin@ximian.com>
25714
25715         * debug-mini.c (mono_debug_init_method): Added
25716         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25717         send a notification to the debugger.
25718
25719         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25720         running in the Mono Debugger, just pass the breakpoint number to
25721         mono_debug_init_method().
25722
25723         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25724
25725 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25726
25727         * mini.c: allow some more unsafe compares.
25728
25729 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25730
25731         * mini-x86.c, Makefile.am: make distcheck works (partially from
25732         a patch by Richard Lee <r.h.lee@attbi.com>).
25733         * regset.c, regset.h: removed, they are unused.
25734
25735 2003-04-25  Dick Porter  <dick@ximian.com>
25736
25737         * driver.c: Usage reports the name as 'mono' not 'mini'
25738         * exceptions-x86.c: Build and run on freebsd
25739
25740 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25741
25742         * Makefile.am: install the program with the 'mono' name and
25743         the library as libmono instead of mini and libmini.
25744
25745 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25746
25747         * driver.c: provide the APIs for the embedding interface of the old jit.
25748
25749 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25750
25751         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25752
25753 2003-04-23  Martin Baulig  <martin@ximian.com>
25754
25755         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25756
25757         * driver.c: Added `--debug' command line argument to enable
25758         debugging support.
25759
25760 2003-04-23  Martin Baulig  <martin@ximian.com>
25761
25762         * debug.[ch]: Removed.  The code is now in
25763         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25764
25765         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25766         last six months.
25767
25768 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25769
25770         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25771
25772 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25773
25774         * mini.c:
25775         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25776         mono_domain_finalize.
25777         (mini_method_compile): use mono_method_profile* if the the option is
25778         enabled.
25779
25780 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25781
25782         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25783         methods with their wrapper.
25784
25785         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25786         methods with their wrapper.
25787
25788         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25789         their wrapper.
25790
25791         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25792         wrapper.
25793
25794         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25795         methods.
25796
25797 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25798
25799         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25800
25801 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25802
25803         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25804         of the mempool. This is slightly faster and uses less memory
25805
25806 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25807
25808         * mini.c: avoid O(n) allocation for variables.
25809
25810 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25811
25812         * mini.c: handle items on the stack after inlining methods.
25813
25814 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25815
25816         * mini.c: make the method->opcode optimization dependent
25817         on MONO_OPT_INSTRINS and do it lazily.
25818
25819 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25820
25821         * driver.c: print overall results at the end of regression run.
25822
25823 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25824
25825         * inssel.brg: don't overwrite symbolic registers.
25826
25827 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25828
25829         * inssel-x86.brg: fix conversion from long to float.
25830
25831 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25832
25833         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25834
25835 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25836
25837         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25838
25839         * driver.c: Added --print-vtable option as in the old JIT.
25840
25841 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25842
25843         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25844
25845 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25846
25847         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25848
25849 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25850
25851         * mini.c regalloc.c regalloc.h: Fix memory leak.
25852
25853 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25854
25855         * aot.c (mono_aot_get_method): register all used strings
25856
25857 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25858
25859         * mini.c: always intern strings references with ldstr at compile time.
25860
25861 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25862
25863         * Makefile.am: add BUILT_SOURCES.
25864
25865 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25866
25867         * driver.c: give a better error message when the assembly to execute
25868         doesn't have an entry point.
25869
25870 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25871
25872         * Makefile.am: added hack for automake
25873
25874         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25875         correct sematics.
25876
25877         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25878
25879 22003-04-07  Martin Baulig  <martin@ximian.com>
25880
25881         * Makefile.am: Added Makefile.am.
25882
25883         * debugger-main.c: Removed, this is now in the debugger where it
25884         belongs.
25885
25886         * mini.pc.in: Call this package `mini' for the moment.
25887
25888
25889
25890
25891
25892
25893
25894
25895
25896
25897
25898
25899
25900
25901