2010-07-08 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
2
3         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
4
5         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
6         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
7         generic trampolines+rgctx fetch trampolines.
8
9 2010-07-08  Geoff Norton  <gnorton@novell.com>
10
11         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
12
13 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
14
15         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
16
17         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
18         is not defined in the LLVM case to keep the imt arg alive.
19
20 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
21
22         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
23         functions, now its 'llvm_<FOO>_trampoline'.
24
25         * method-to-ir.c (emit_imt_argument): Fix llvm support.
26
27         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
28         cannot be passed in the same call.
29
30         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
31         register to be the same as the RGCTX register, the two can't be used together on
32         the same call.
33
34 2010-07-05  Miguel de Icaza  <miguel@novell.com>
35
36         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
37         that allows the user to force the VM to use llvm or sgen.
38
39 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
40
41         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
42         before processing the exception on PPC too.
43
44         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
45
46         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
47         'this' is always passed as the first argument, before the vtype ret arg. This
48         simplifies get_this_arg_reg () and LLVM integration.
49
50 2010-07-05  Martin Baulig  <martin@ximian.com>
51
52         * exceptions-x86.c (mono_arch_handle_exception): Port this to
53         Windows; apply my patch from r159782 in the mono-2-6 branch.
54
55 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
56
57         * Makefile.am: Don't build the debug assembler files if we're building without
58         debugger support.
59
60 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
61
62         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
63
64 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
65
66         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
67         length.
68
69         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
70         regs [ARMREG_FP] instead.
71
72         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
73
74         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
75         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
76
77         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
78
79         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
80
81         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
82
83         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
84         without IMT_REG defined (ARM).
85
86         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
87         the trampolines.
88
89 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
90
91         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
92
93 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
94
95         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
96         definitions to match their declarations and vice-versa.
97
98 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
99
100         * Makefile.am (common_sources): Add mini-llvm.h.
101
102         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
103
104 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
105
106         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
107         compiling.
108
109 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
110
111         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
112         implemt the option of loading the llvm backend from a module so
113         that we can have a single binary and the bloat from llvm is
114         only experienced when it is actually loaded.
115
116 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
117
118         * mini-llvm.c: remove direct access to mono_defaults.
119
120 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
121
122         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
123         a no-op.
124
125         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
126
127         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
128         is now mono_arch_nullify_class_init_trampoline ().
129         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
130         opcodes, they are no longer needed.
131
132         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
133         now mono_arch_nullify_class_init_trampoline ().
134         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
135         opcodes, they are no longer needed.
136
137         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
138         vtable on platforms which support it.
139
140         * driver.c: Print the full LLVM version we are compiled against in --version.
141
142         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
143         a bit better. Decode nesting information to fix eh support for llvm+aot.
144
145         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
146         methods.
147
148         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
149
150         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
151         is always passed as the first argument, before the vtype ret arg. This simplifies
152         get_this_arg_reg () and LLVM integration.
153
154 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
155
156         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
157         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
158         most of the vcall specific code to mono_vcall_trampoline () from
159         common_call_trampoline ().
160
161 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
162
163         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
164         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
165         if the callsite is patched.
166
167         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
168         the llvm branch.
169
170         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
171         the trampoline in the xdebug info.
172
173         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
174         as well.
175
176 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
177
178         * mini-llvm.c: Fix a few problems exposed by make check.
179
180 2010-06-25  Mark Probst  <mark.probst@gmail.com>
181
182         * mini-trampolines.c (common_call_trampoline): An ugly hack to
183         work around a potentially very hard to fix problem with inflating
184         generic methods.
185
186 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
187
188         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
189         problem has been fixes.
190
191 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
192
193         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
194
195         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
196         It might be be better to define a MonoGCJitOptions structure later and have the
197         GC return that.
198
199         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
200
201         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
202
203         * debugger-agent.c (get_objref): Implement support for sgen.
204
205         * driver.c: Remove the unused gc_wrapper.h include.
206
207         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
208         implementation.
209
210 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
211
212         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
213
214         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
215         in MonoCompile.
216
217         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
218         instead.
219
220 2010-06-23  Miguel de Icaza  <miguel@novell.com>
221
222         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
223         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
224
225         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
226         it only for Boehm diagnostics.
227
228         * Makefile.am: Make the file a bit more consistent.
229
230         * debug-debugger.c: Wrap the entire file with an #ifdef
231         MONO_DEBUGGER_SUPPORTED to simplify the build.
232
233         * Makefile.am: Fix the opcodes build issue by including the
234         source, not by including the .lo file directly
235
236         Always bring the MDB sources into the build, to drop the
237         dependency on the AM_CONDITIONAL from configure.in as the hard
238         debugger supports Boehm, but not Sgen, this simplifies the build. 
239
240         * Renamed the *.s files into *.S
241
242 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
243
244         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
245         wb for now on 64bits systems while issues with valuetype returns
246         are not fixed.
247
248 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
249
250         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
251         passes by calling createStandardFunctionPasses ().
252
253 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
254
255         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
256
257 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
258
259         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
260         MONO_INST_FAULT.
261
262         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
263         allow better optimization if the OP_LDADDR which caused the flag to be set was
264         optimized away.
265
266         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
267
268         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
269         the type token.
270
271         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
272
273         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
274
275 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
276
277         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
278         to handle the code sequence generated for non-near calls. Fixes #616056.
279
280 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
281
282         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
283
284         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
285
286         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
287         nesting clause too.
288         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
289         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
290         trampoline which saves the context, so changes made to callee saved registers in
291         finally clauses are visible to a nesting catch clause.
292
293         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
294
295         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
296         in LLVM compiled code.
297         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
298         the finally handler has ran.
299
300         * mini.h (ResumeState): New structure containing information required to resume
301         exception handling after executing LLVM compiled finally clauses.
302
303         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
304         bit, by passing all the registers as one argument.
305
306 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
307
308         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
309         to avoid an assert.
310
311 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
312
313         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
314
315         * aot-compiler.c aot-runtime.c: Fix LLVM support.
316
317         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
318         pad, branch to a new bblock instead.
319
320         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
321         orig_method.
322
323         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
324
325         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
326
327 2010-06-17  Geoff Norton  <gnorton@novell.com>
328
329         * mini-arm.h:
330         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
331         can be used by sgen.
332
333 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
334
335         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
336
337         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
338         fails.
339
340         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
341         the ip done by throw_exception (), it is not needed for corlib exceptions.
342
343 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
344
345         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
346         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
347         of size > 5 words. This support fast barriers for value types up to
348         256/512 bytes which     beyond that the copying itself is the major issue.
349
350         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
351         for gsharing, so use it.
352
353         This eliminate all calls to mono_value_copy from managed code in
354         gmcs, fsharp and ipy.
355
356         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
357
358         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
359         performance kept
360
361         * mini.c (mini_init): Register new icall.
362
363 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
364
365         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
366         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
367
368 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
369
370         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
371         value types as the overhead is huge. Manually expand it up to 5 words to
372         avoid code bloat.
373
374         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
375         is an exception that performance is dominated by mono_value_copy.
376
377         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
378
379 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
380
381         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
382         trampolines on x86, since those have their own cconv.
383
384         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
385         exception trampolines.
386
387         * tramp-x86.c: Add xdebug info for a few trampolines.
388
389         * mini-llvm.c: Set the name of the arguments.
390
391         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
392         using a block address if using the LLVM mono branch.
393
394         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
395         trampolines.
396
397 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
398
399         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
400
401         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
402
403         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
404
405         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
406
407         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
408         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
409         to identify the vtable slot address plus the method which needs to be compiled.
410
411         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
412         using llvm.
413
414         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
415         'this' is always passed as the first argument, before the vtype ret arg. This
416         simplifies get_this_arg_reg () and LLVM integration.
417
418         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
419         the latest changes.
420
421         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
422         these trampolines.
423
424         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
425
426         * mini-llvm.c: Fix compilation with llvm 2.6.
427
428         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
429
430         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
431         defined.
432
433         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
434         is always passed as the first argument, before the vtype ret arg. This simplifies
435         get_this_arg_reg () and LLVM integration.
436
437 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
438
439         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
440
441         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
442         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
443         translate into much nicer code.
444
445 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
446
447         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
448         parameter index information. Use this to simplify a lot of code.
449
450         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
451
452 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
453
454         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
455         to fix infinite generic recursion. Fixes #612702.
456
457 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
458
459         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
460         imt trampoline per imt slot when using LLVM.
461
462 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
463
464         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
465
466 2010-06-09  Levi Bard  <levi@unity3d.com>
467
468         * debugger-agent.c: Clear unloaded types on appdomain unload.
469
470 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
471
472         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
473         Fixes #612206.
474
475         * exceptions.cs: Add a test.
476
477 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
478
479         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
480
481         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
482
483         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
484         so it doesn't have to do it.
485
486         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
487         process does not mix with ours.
488
489         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
490         ones.
491
492         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
493         loads/stores which can throw exceptions inside clauses.
494
495 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
496
497         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
498         one ENDFINALLY.
499
500         * mini.c (mini_init): Register mono_resume_unwind as an icall.
501
502 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
503
504         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
505
506         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
507         locals.
508
509 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
510
511         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
512         appdomain.
513
514 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
515
516         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
517         Use a separate generic class init trampoline for llvm, since it needs a different
518         signature.
519
520         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
521         includes the location of this/rgctx.
522
523         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
524         branch.
525
526 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
527
528         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
529
530         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
531         clause.
532
533 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
534
535         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
536         says so.
537
538         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
539
540         * aot-compiler.c (patch_to_string): New debugging helper function.
541
542 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
543
544         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
545         trampoline.
546
547         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
548
549         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
550
551         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
552
553         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
554         clauses.
555
556         * mini.c (create_jit_info): Print EH clause info for LLVM too.
557
558 2010-05-28  Mark Probst  <mark.probst@gmail.com>
559
560         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
561         cpobj with reference types.
562
563 2010-05-28  Mark Probst  <mark.probst@gmail.com>
564
565         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
566         write barrier for reference types.
567
568 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
569
570         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
571         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
572
573 2010-05-31  Martin Baulig  <martin@ximian.com>
574
575         Fix #608271.
576
577         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
578         clear_breakpoint() on all breakpoint events and remove them from the list.
579
580 2010-05-27  Martin Baulig  <martin@ximian.com>
581
582         Fix #605698.
583
584         * debugger-agent.c (method_commands, type_commands): Temporarily
585         set the appdomain while executing this method; do all metadata
586         calls in the debuggee's appdomain where user assemblies are loaded.
587
588 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
589
590         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
591
592 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
593
594         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
595
596 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
597
598         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
599         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
600         be referenced even after the header is freed.
601
602         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
603         section.
604
605 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
606
607 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
608
609         * genmdesc.c (main): Fixing the detection of the nacl switch.
610
611         Code is contributed under MIT/X11 license.
612
613 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
614
615         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
616
617         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
618
619         * mini.h (LLVM_CHECK_VERSION): New helper macro.
620
621 2010-05-25  Miguel de Icaza  <miguel@novell.com>
622
623         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
624         the Perl program
625
626         * genmdesc.c: Added support for nacl: key on the machine
627         description files to support the extra space required by Google
628         Native Client.
629
630 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
631
632         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
633
634 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
635
636         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
637         mono_runtime_class_init_full ().
638         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
639
640 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
641
642         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
643
644 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
645
646         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
647         two are not the same on ilp32.
648
649 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
650
651         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
652         added by mistake.
653
654         * mini-ppc.c: Fix the DISABLE_JIT build.
655
656 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
657
658         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
659         (make_writable): Remove this unused function.
660
661 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
662
663         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
664         structure. Make the labels to plt entries local symbols instead of assembler local
665         labels, since tha latter causes problems for the iphone linker.
666
667 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
668
669         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
670
671 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
672
673         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
674         (ppc_patch_full): Ditto.
675
676         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
677
678         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
679         if gshared is enabled, to avoid asserts in the trampoline code.
680
681         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
682         on ia64.
683
684 2010-05-15  Geoff Norton  <gnorton@novell.com>
685
686         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
687         xdebug mode.
688
689 2010-05-14  Geoff Norton  <gnorton@novell.com>
690
691         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
692         misaligned stack on darwin.
693
694 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
695
696         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
697         arm.
698
699 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
700
701         * xdebug.c: Fix ARM support.
702
703 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
704
705         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
706         and do most of the work on the normal stack.
707         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
708
709 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
710
711         * aot-compiler.c: Put non-code data into the .rodata section on linux.
712
713 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
714
715         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
716
717 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
718
719         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
720         and do most of the work on the normal stack.
721
722 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
723
724         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
725         and do most of the work on the normal stack even if sigaltstack is disabled.
726
727 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
728
729         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
730         UCONTEXT_REG_ constants are available on linux as well.
731         (mono_arch_monoctx_to_sigctx): Ditto.
732         (mono_arch_ip_from_context): Ditto.
733
734 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
735
736         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
737         other domains.
738
739 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
740
741         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
742         no longer needed.
743
744 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
745
746         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
747         if a breakpoint cannot be inserted.
748
749 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
750
751         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
752
753 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
754
755         * debugger-agent.c (frame_commands): Return an error instead of asserting if
756         no JIT info is found for the method.
757
758 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
759
760         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
761         in debug printf.
762
763 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
764
765         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
766         a list of arch specific trampolines.
767
768         * aot-compiler.c (emit_trampolines): Use it.
769
770 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
771
772         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
773         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
774         get rid of the _full from their name.
775
776 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
777
778         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
779         get_nullified_class_init_trampoline to remove some code duplication.
780
781 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
782
783         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
784         attach.
785
786 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
787
788         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
789
790         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
791
792         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
793         there is no need to jump through the first plt entry.
794
795         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
796
797         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
798         arch-specific function.
799         (mono_aot_get_plt_info_offset): Ditto.
800
801         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
802         mono_arch_init () to register jit icalls called from full-aot trampolines.
803         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
804         to mini-<ARCH>.c.
805
806         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
807         the specialized throw corlib exception trampoline, use a variant of the normal
808         trampoline along with a new C function which does the call to
809         mono_exception_from_token (), just like on x86.
810
811 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
812
813         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
814         Reorganize the full aot trampoline creation functions, instead of taking a bunch
815         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
816         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
817         creation functions on architectures which have the full-aot ones.
818
819 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
820
821         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
822
823 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
824
825         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
826         explicitly, this seems to be required by some gcc versions at -O2.
827
828         * mini-arm.c: Ditto.
829
830 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
831
832         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
833         has_target delegate invokes.
834
835 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
836
837         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
838         info fields.
839
840         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
841         add patches/unwind info arguments, move to mini.c.
842
843         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
844
845 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
846
847         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
848         command which returns full path names.
849
850 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
851
852         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
853         code_size output variable.
854
855         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
856         mono_get_lmf_addr.
857         
858 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
859
860         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
861         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
862         (mono_arch_cpu_enumerate_simd_versions): Ditto.
863
864 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
865
866         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
867         apple assembler.
868
869 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
870
871         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
872
873 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
874
875         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
876
877 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
878
879         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
880
881 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
882
883         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
884         line number support works with eglib.
885
886 2010-04-27  Miguel de Icaza  <miguel@novell.com>
887
888         * driver.c, mini.c: Since linking with LLVM makes the default Mono
889         dirty an extra 70kb pages on startup we are now going to choose a
890         different strategy: ship mono and mono-llvm binaries, with the
891         second being the one that links with LLVM and defaults to LLVM
892         being enabled.
893
894 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
895
896         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
897         Implement full-aot support on x86.
898
899         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
900         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
901         the first register returned by get_global_int_regs ().
902
903         * cpu-x86.md: Fix the length of insertx_u1_slow.
904
905         * iltests.il.in: Disable tail call tests when running with full-aot.
906
907 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
908
909         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
910
911 2010-04-24  Mark Probst  <mark.probst@gmail.com>
912
913         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
914         in the initializer, because it's non-constant.
915
916 2010-04-23  Miguel de Icaza  <miguel@novell.com>
917
918         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
919         of LLVM on by default.   Used for buildbots and other setups.
920
921 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
922
923         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
924
925 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
926
927         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
928         initonly static fields when using moving GC.
929
930         Contributed under MIT/X11 license.
931
932 2010-04-23  Geoff Norton  <gnorton@novell.com>
933
934         * mini-amd64.h: Darwin x86_64 support.
935
936 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
937
938         * exceptions-arm.c: Remove platform checks in favor of configure checks.
939
940 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
941
942         * exceptions-arm.c: Add Android support for sigcontext structure.
943
944 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
945
946         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
947         wrappers correctly now that their wrapper info is NULL.
948
949 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
950
951         * mini.c (mono_jit_compile_method_inner): Avoid calling
952         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
953
954 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
955
956         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
957         so the latter can be #ifndef DISABLE_JIT-ed.
958
959         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
960
961 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
962
963         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
964
965 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
966
967         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
968         stack.
969
970 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
971
972         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
973         calling mono_class_num_methods (). Fixes #592244.
974
975 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
976
977         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
978
979         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
980
981 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
982
983         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
984         version.
985         * (handle_alloc): Ditto.
986         (mono_method_to_ir): Remove the constrained call restriction added by a previous
987         change, its not needed anymore.
988
989 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
990
991         * mini-posix.c (sigusr1_signal_handler): Fix build on
992         non x86/amd64 systems.
993
994 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
995
996         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
997         calls where the constrained class needs a context. Fixes #595863.
998
999         * iltests.il.in: Add a test.
1000
1001 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1002
1003         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1004         2.6/SVN seems to have broken support for them.
1005
1006 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1007
1008         * mini-llvm.c: Fix support for LLVM 2.6.
1009
1010 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1011
1012         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1013         MonoInternalThread belonging to the thread.
1014
1015 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1016
1017         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1018         unsafe optimization that will remove bound checks.
1019
1020 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1021
1022         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1023         CompareExchange not to be inlined for I8.
1024
1025         Contributed under MIT/X11 license.
1026
1027 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1028
1029         * array.cs: Add tests for cast between primitive array types.
1030
1031 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1032
1033         * Makefile.am: create a convenience library for moon to link with
1034
1035 2010-04-07 Paolo Molaro <lupus@ximian.com>
1036
1037         * method-to-ir.c: optimize array accesses from generic interfaces.
1038
1039 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1042
1043 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1044
1045         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1046         of marshalbyref classes.
1047
1048         Fixes #515884.
1049
1050 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1051
1052         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1053         information.
1054
1055         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1056         information.
1057
1058         * mini.h: Increase AOT version.
1059
1060 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1061
1062         * mini-x86.h: Only enable soft debugger when using sigaction or on
1063         Windows. Fixes build on Haiku (lacks siginfo_t).
1064
1065         Code is contributed under MIT/X11 license.
1066
1067 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1068
1069         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1070         BeOS-style signal handlers.
1071
1072         Code is contributed under MIT/X11 license.
1073         
1074 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1077
1078 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1079
1080         * mini-exceptions.c: Fix win32 build.
1081
1082 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1083
1084         * mini.c, driver.c: Call mono_gc_base_init() before
1085         mono_debug_init().
1086
1087 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1088
1089         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1090         call_method]): Delegate the actual work in security-core-clr.c
1091         to ease code sharing.
1092
1093 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1094
1095         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1096         float conv.ovf.un opcodes are encountered, instead of asserting later.
1097         Fixes #566296.
1098
1099 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1102
1103         * iltests.il.in: Add a test.
1104
1105 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1106
1107         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1108         large. Fixes #567040.
1109
1110         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1111
1112 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1113
1114         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1115         #592711.
1116
1117 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1118
1119         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1120         mono_create_handler_block_trampoline with the proper #ifdef so that it
1121         compiles on amd64.
1122
1123 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1124
1125         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1126         allows to select if it's new or old context that is passed to 
1127         the callback.
1128
1129         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1130         case when executing a guarded handler from the EH machinery.
1131
1132         * mini-exceptions.c (mono_install_handler_block_guard): New function
1133         responsible for checking for handler blocks, installing the guard and
1134         clearing abort state.
1135
1136         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1137         to check for handler blocks and skip interruption logic if one was found.
1138
1139         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1140         by the handler block guard trampoline. Resumes interruption by raising the
1141         pending ThreadAbortException.
1142
1143         * mini.c (create_jit_info): Calculate the end address of a finally block.
1144
1145         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1146         of a finally block to a specified address and return the old one.
1147
1148         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1149         trampoline patches the original return address and calls the trampoline function.
1150
1151 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1152
1153         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1154
1155         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1156         does the patching if the callee is in the same domain.
1157
1158         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1159         of mono_arch_patch_plt_entry ().
1160
1161 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1162
1163         * mini.c (create_jit_info): Fix try block hole length encoding.
1164
1165 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1166
1167         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1168         duplicate information and print offsets instead of absolute addresses.
1169
1170 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1171
1172         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1173         event is sent. Fixes #591733.
1174
1175 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1176
1177         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1178         OpenBSD.
1179
1180 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1183         thread_to_tls hash table.
1184
1185         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1186         section. Fixes #591000.
1187
1188 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1189
1190         * Makefile.am (version.h): Check for pure .git directory only,
1191         fixes SVN revision when using git without git-svn.
1192
1193         Contributed under MIT/X11 license.
1194
1195 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1198
1199 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1200
1201         * basic-simd.cs: Test for vector x scalar binary operators.
1202
1203 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1204
1205         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1206         intrinsics with expanded scalar arguments.
1207
1208 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1209
1210         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1211         don't have an exception class, so don't decode it. This would crash
1212         with filter clauses.
1213
1214 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1215
1216         Make sure that trunk builds with DISABLE_JIT, an update to the
1217         PlayStation 3 port.
1218         
1219         * mini.c (mini_get_shared_method): this code seems to be necessary
1220         regardless of whether DISABLE_JIT has been defined.
1221
1222         (mono_jit_compile_method_inner): it seems that this method is
1223         required even in full AOT mode, so ifdef out only the pieces that
1224         try to genrate code (the body of code that applies patches to the
1225         code).  
1226
1227         (mini_method_compile): do not compile when using DISABLE_JIT.
1228
1229         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1230         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1231         compile when DISABLE_JIT is set.
1232
1233 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1234
1235         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1236         arch really supports it.
1237
1238 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1239
1240         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1241
1242 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1243
1244         * exceptions-s390x.c: Add support for
1245         mono_arch_get_throw_corlib_exception and fix throw by name.
1246
1247         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1248         logic (especially for varargs); Correct localloc sizing; Add
1249         mono_arch_get_this_arg_from_call and
1250         mono_arch_get_this_arg_from_call.
1251
1252         * mini-s390x.h: Add support for facility list extraction;
1253         Correct/update MONO_ARCH_xxx settings.
1254
1255         * mini-s390.c: Minor corrections to instruction output for
1256         varargs. No IMT implementation - I think it's time to deprecate
1257         s390 and just leave s390x.
1258
1259         * tramp-s390x.c: Correct creation of trampoline instruction
1260
1261
1262         * cpu-s390x.md: Update some instruction lengths
1263
1264 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1267         can be hit with partial sharing.
1268
1269         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1270         in non-shared classes correctly.
1271         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1272         Turn on partial sharing.
1273
1274 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1275
1276         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1277         by mistake.
1278
1279 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1280
1281         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1282         mono_method_signature ().
1283
1284         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1285
1286         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1287         error checking, so later calls do not need error checking.
1288
1289 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1292
1293         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1294
1295 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1296
1297         * mini-exceptions.c (mono_handle_exception_internal): Don't
1298         check try_end for archs different than s390. 
1299
1300         * mini.c (create_jit_info): Don't crash if the finallt block is the
1301         last one.
1302
1303 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1304
1305         * driver.c (mono_main): Don't free global codeman under linux since
1306         glic now peeks at code on stack for more archs than just amd64.
1307
1308 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1309
1310         * mini.c, method-to-ir.c: changes to support compressed interface
1311         bitmaps.
1312
1313 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1314
1315         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1316         Use sigaction on OpenBSD too.
1317
1318 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1319
1320         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1321
1322 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1323
1324         * debugger-agent.c: #include sys/select.h for fd_set.
1325
1326         Code is contributed under MIT/X11 license.
1327
1328 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1329
1330         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1331         (openbsd+amd64 ?).
1332
1333 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1334
1335         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1336         some large methods with lots of exception handlers. Fixes #440924.
1337
1338 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1339
1340         * method-to-ir.c: remove code duplication for interface checks.
1341
1342 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1343
1344         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1345         (assembly_unload): Clear all event requests referencing the to-be unloaded
1346         assembly.
1347
1348
1349 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1350
1351         * mini.h, mini-exceptions.c: restore the state of the stack
1352         guard page permissions.
1353
1354 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1357         call site patching code, it doesn't appear to be needed.
1358
1359 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1360
1361         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1362         sharing generic methods whose type arguments are a mix of reference and
1363         non-reference types. Not yet turned on.
1364
1365         * mini.c (mini_get_shared_method): New helper function to return
1366         the method which will be compiled/registered in the JIT tables when doing
1367         generic sharing.
1368         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1369         use mini_get_shared_method ().
1370
1371         * mini.c (mini_method_compile): Register the same method which is compiled when
1372         doing generic sharing.
1373
1374         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1375
1376         * generics.cs: Add partial sharing tests.
1377
1378 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1379
1380         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1381                    Add an enum value that or's all possable values together. Add an enum value
1382                    that marks the end of the used bit indexes.
1383
1384         * mini-amd64.c : Make changes to match the changes in mini.h 
1385
1386         * mini-x86.c : Make changes to match the changes in mini.h
1387
1388         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1389                    simd_version to support more simd versions. Changed the name of
1390                    simd_version to simd_version_flags to make it more intuitive that
1391                    it now contains bit flags. Reordered the *_intrinsics arrays to
1392                    match the changes above. Changed emit_intrinsics() to use the new
1393                    setup mentioned above.
1394
1395         Code is contributed under MIT/X11 license.
1396
1397 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1398
1399         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1400         remaining archs. Alpha and hppa maintainers, please stand up.
1401
1402 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1405         is needed even when fail_tramp!=NULL.
1406
1407 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * debugger-agent.c (insert_breakpoint): Write a log message.
1410
1411 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1412
1413         * iltests.il.in: Add a few tests for LEAVE going over multiple
1414         finally clauses.
1415
1416 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1417
1418          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1419
1420 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1421
1422         * mini.h (MonoBasicBlock): Add native_length field.
1423         * mini.h (MonoCompile): Add try_block_holes field.
1424         * mini.h (MonoInst): Add exception_clause pointer to
1425         the data union.
1426
1427         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1428         * mini.c (mono_cfg_add_try_hole): New function to register possible
1429         holes in try blocks.
1430         * mini.c (create_jit_info): Fill in the holes information.
1431
1432         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1433         by a try block.
1434
1435         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1436
1437 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1438
1439         * jit-icalls.c: adjusted for the array API changes.
1440
1441 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1444
1445 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1446
1447         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1448         the 'pending' flag. This fixes support for appdomains too.
1449
1450
1451 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1452
1453         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1454
1455 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1458         when using LLVM, LLVM generates it itself when needed.
1459
1460         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1461
1462         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1463         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1464         OP_ANDNPS/OP_ANDNPD.
1465
1466 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1469         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1470         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1471
1472 2010-03-11  Martin Baulig  <martin@ximian.com>
1473
1474         * debugger-agent.c (type_commands): Add NULL check to
1475         `CMD_TYPE_GET_SOURCE_FILES'.
1476
1477 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1478
1479         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1480
1481 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1484         #586664.
1485
1486         * iltests.il.in: Add a test.
1487
1488 2010-03-05  Martin Baulig  <martin@ximian.com>
1489
1490         Add support for aborting invocations.
1491
1492         * debugger-agent.c
1493         (InvokeData): Added `InvokeData *last_invoke'.
1494         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1495         added a new `invoke' field to keep the `InvokeData *' throughout
1496         the invocation.
1497         (ErrorCode): Added `ERR_NO_INVOCATION'.
1498         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1499         (mono_debugger_agent_handle_exception): Don't report any exception
1500         if an abort was requested.
1501         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1502         a thread abort if necessary.
1503         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1504
1505 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1506
1507         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1508         so we can release the whole list and not just the first one. Free
1509         it in more places as well.
1510
1511 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1512
1513         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1514
1515 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1516
1517         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1518
1519 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1520
1521         * driver.c: report also other misc build options.
1522
1523 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1524
1525         * method-to-ir.c: Generate better code for the NewObject
1526         intrinsic.
1527         
1528 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1531         is disabled. Fixes #582322.
1532
1533         * iltests.il.in: Add a test.
1534
1535 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1536
1537         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1538         the handling of obj->synchronization == null and owner != current thread to
1539         mono_monitor_exit ().
1540
1541         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1542
1543
1544 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1545
1546         * mini.c: change the way emulated opcode info is stored and save about
1547         4 KB of runtime memory.
1548
1549 2010-03-04  David S. Miller  <davem@davemloft.net>
1550
1551        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1552        that don't provide the siginfo in the second signal handler argument
1553        are buggy, and this has been fixed for years.
1554        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1555        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1556
1557 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1558
1559         * aot-runtime.c (find_symbol): Fix a leak.
1560         (decode_patch): Ditto.
1561
1562 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1563
1564         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1565
1566 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1567
1568         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1569
1570 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1571
1572         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1573
1574 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1575
1576         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1577         to check for errors, it's enough to create the metadata open.
1578
1579         Fixes #562150
1580
1581 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1582
1583         * trace.c|h:
1584         * mini-exceptions.c: Add support for printing stack traces when handling
1585         exceptions, and when printing exceptions thrown while tracing also print
1586         the exception message.
1587
1588 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1589
1590         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1591         since the exclude token is a valid string character.
1592
1593 2010-03-02  Levi Bard  <levi@unity3d.com>
1594
1595         * debugger-agent.c: Invalidate thread stacks on domain unload.
1596
1597 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1598
1599         * method-to-ir.c: Emit dummy_use for stored reference after write
1600         barriers to make sure the object is pinned if the GC interrupts
1601         before the write barrier is done.
1602
1603 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1606
1607 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1608
1609         * debugger-agent.c: Add a log message printing the protocol version.
1610
1611 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1612
1613         * debugger-agent.c: Add a new command to communicate the protocol version used
1614         by the client. This could be used to allow newer runtimes to communicate with
1615         older clients.
1616
1617 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1618
1619         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1620
1621 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1622
1623         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1624         type.
1625
1626 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1627
1628         * mini-arm.c: make the arm cpu arch configurable with the
1629         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1630         Bug #584198.
1631
1632 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1633
1634         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1635         support for the perf tool on Linux.
1636
1637 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1638
1639         * method-to-ir.c: make string.InsertenalSetChar() specialization
1640         effective.
1641
1642 2010-03-01  Robert Jordan  <robertj@gmx.net>
1643
1644         * Makefile.am: fix the non-static build.
1645
1646 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1649         here.
1650
1651 2010-02-26  Robert Jordan  <robertj@gmx.net>
1652
1653         * tasklets.c (continuation_store): Return from an error condition
1654         immediately.
1655
1656 2010-02-26  Martin Baulig  <martin@ximian.com>
1657
1658         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1659
1660         * debug-mini.c
1661         (MonoDebuggerThreadInfo): Added `internal_flags'.
1662         (MonoDebuggerInternalThreadFlags): New enum.
1663         (_mono_debugger_throw_exception): Don't signal the debugger if a
1664         type abort was requested.
1665         (_mono_debugger_unhandled_exception): Likewise.
1666         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1667         (mono_debugger_runtime_invoke): If the debugger requested a thread
1668         abort during the invocation, reset it here.
1669
1670 2010-02-26  Martin Baulig  <martin@ximian.com>
1671
1672         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1673         instead of `MonoThread *'.
1674
1675 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1676
1677         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1678         code offsets table, as it is mostly sorted.
1679
1680 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1683         Fixes #582991.
1684
1685 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1686
1687         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1688
1689 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1690
1691         * Makefile.am: build the new ABI version of the libmono library.
1692         * debugger-agent.c, mini.c: fix warnings with the new API.
1693         * jit.h: don't depend on glib.h being included.
1694
1695 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1696
1697         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1698
1699 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1700
1701         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1702         ThreadStatic variables.
1703
1704 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1707         data is not freed yet. Fixes #582460.
1708
1709 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1712         event requests. Bump protocol minor version.
1713
1714 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1717
1718 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1719
1720         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1721         #581950.
1722
1723         * iltests.il.in: Add a test.
1724
1725 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1726
1727         * mini.c (inline_method): Check for loader errors.
1728
1729 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1730
1731         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1732         instead of mono_method_get_header as it doesn't decode locals
1733         so the called method can have unresolved dependencies that will only
1734         be satisfied after the current method is JIT'd.
1735
1736         Fixes #550968.
1737
1738 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * basic.cs (test_0_div_opt): Speed this up a bit.
1741
1742 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1743
1744         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1745
1746         * mini.c (mono_jit_create_remoting_trampoline): Call
1747         mono_create_specific_trampoline () instead of
1748         mono_arch_create_specific_trampoline ().
1749
1750         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1751
1752 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1753
1754         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1755         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1756
1757         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1758
1759         * mini-amd64.c: Fix DISABLE_JIT support.
1760
1761 2010-02-20  Geoff Norton  <gnorton@novell.com>
1762
1763         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1764
1765 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1766
1767         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1768         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1769         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1770         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1771         handle_exception.
1772
1773 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1776         edx/ecx too. This is needed to support OP_SEQ_POINT.
1777
1778 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1781
1782         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1783
1784 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1787         LLVM+AOT+exceptions, not enabled yet.
1788
1789 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1792
1793 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1796         xdebug info for these.
1797
1798         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1799         in a few places.
1800
1801         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1802         not used yet.
1803
1804 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1805
1806         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1807
1808 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1811         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1812
1813         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1814         for mtouch.
1815
1816 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1817
1818         * debugger-agent.c: handle incomplete reads and EINTR in
1819         recv()/send(). This could have been causing random
1820         disconnections.
1821
1822 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1825         points.
1826
1827         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1828         so they have small offsets. Fixes #566311.
1829
1830 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1831
1832         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1833
1834 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * mini-amd64.c: Remove the special casing of byref in a few places now that
1837         mini_type_get_underlying_type () handles it.
1838
1839         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1840         by returning native int. Fixes #577984.
1841
1842 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1843
1844         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1845         a macro.
1846
1847         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1848         of putting the clause itself.
1849
1850         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1851
1852 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1855         might be unaligned.
1856
1857 2010-02-10  Geoff Norton  <gnorton@novell.com>
1858
1859         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1860
1861 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1864         llvm methods too.
1865
1866         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1867         it is not an LLVM generated symbol.
1868
1869         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1870
1871         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1872         implementation in gshared mode because it causes regressions.
1873
1874         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1875
1876         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1877         should be done by the caller.
1878
1879         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1880
1881         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1882
1883         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1884         since mono_jit_info_table_find () doesn't do it anymore.
1885
1886         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1887         instead of mono_jit_info_table_find ().
1888
1889 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1890
1891         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1892
1893         * aot-compiler.c (encode_method_ref): Update after the removal of
1894         mono_gc_get_managed_allocator_type ().
1895
1896         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1897         Fixes #564538.
1898
1899 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1900
1901         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1902         generic params as well.
1903         (handle_isinst): Ditto.
1904
1905         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1906         instead of always calling an icall.
1907
1908         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1909         computing the size of the got.
1910
1911         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1912         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1913         the assembly directive '.set' so it points to the first LLVM emitted method.
1914
1915 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1916
1917         * mini.c (mini_method_verify): Report the method which failed to verify.
1918
1919 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1920
1921         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1922         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1923         runtime MS verifier.
1924
1925 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1926
1927         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1928         #561962.
1929
1930 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1931
1932         * mini-llvm.c: Init the jit module only when first JITting.
1933
1934         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1935
1936         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1937
1938         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1939         replaced with the real got.
1940
1941         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1942
1943         * image-writer.c: Reduce the amount of #ifdefs a bit.
1944
1945         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1946         llvm on darwin/arm.
1947
1948         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1949
1950         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1951         global.
1952
1953 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1956         (mono_llvm_emit_method): Fix unaligned stores too.
1957
1958         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1959         so async stack walks don't crash.
1960
1961 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1964         was not patched if the callee needed an rgctx trampoline.
1965
1966 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1967
1968         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1969         vtable address in AOT code.
1970
1971 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1972
1973         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1974         MonoInst's.
1975
1976 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1977
1978         * genmdesc.pl: remove dependency on external cpp.
1979
1980 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1981
1982         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1983         using LLVM, its not needed, and abcrem can't handle it.
1984
1985 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1986
1987         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1988         it easier to group instructions and reduce duplication.
1989
1990 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * decompose.c: Move the array/soft float decompose routines here from
1993         method-to-ir.c.
1994
1995         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1996
1997 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1998
1999         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2000         to tell LLVM that the got is constant, not used yet.
2001
2002         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2003
2004 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2005
2006         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2007         managed wrappers.
2008
2009 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2010
2011         * aot-compiler.c (add_wrappers): Commit the hack which generates
2012         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2013         custom attribute.
2014
2015 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2016
2017         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2018         a fault, only used by the LLVM backend.
2019
2020         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2021         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2022
2023         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2024         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2025
2026         * mini-llvm.c: Only generate volatile loads from load instructions which have
2027         the MONO_INST_FAULT flag set.
2028
2029 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2030
2031         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2032         64 bit platforms.
2033
2034 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2037         sequence points. Fixes #571236.
2038
2039 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2040
2041         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2042         end of the appdomain unload process, after assemblies have been unloaded.
2043         Fixes #574842.
2044
2045 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2048         works.
2049
2050         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2051         Fixes #573988.
2052
2053 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2056
2057 2010-01-26  Geoff Norton  <gnorton@novell.com>
2058
2059         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2060         with struct marshalability.
2061
2062 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2063
2064         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2065         it supports class names as well.
2066
2067         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2068         needed by the GC map code.
2069
2070         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2071         flags if needed.
2072
2073         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2074         if cfg->init_ref_vars is set.
2075
2076         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2077         cfg->disable_initlocals_op_refs is set.
2078
2079         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2080         using liveness info if cfg->compute_precise_live_ranges is set.
2081
2082         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2083         volatile variables correctly. Add comments about the live ranges. Not enabled
2084         yet.
2085
2086 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2087
2088         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2089         0x2a into them in method prologs.
2090
2091         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2092
2093 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2094
2095         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2096         classes, since llvm is compiled with -fno-rtti.
2097
2098         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2099
2100         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2101         llvm does not require it.
2102
2103         * aot-runtime.c (load_method): Print the full name of the last aot method.
2104
2105 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2106
2107         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2108         thread has not fully started yet.
2109
2110 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2113
2114 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2115
2116         * driver.c: Do not abort if LLVM is not supported, print a
2117         warning and add the information to the Mono JIT information.
2118
2119 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2120
2121         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2122         using explicit null checks.
2123
2124 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2127         related code.
2128
2129         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2130         () in one place.
2131         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2132         its no longer needed.
2133
2134         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2135
2136         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2137         define for platforms still using it (s390). Get rid of the
2138         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2139
2140         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2141         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2142
2143         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2144         the caller pushed the arguments.
2145
2146         * mini-llvm.c: Enable throwing exceptions on x86.
2147
2148         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2149         "Thread (nil) may have been prematurely finalized" messages if this is called
2150         on a thread not registered with the runtime.
2151
2152         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2153
2154 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * jit-icalls.c (mono_array_new_3): New jit icall.
2157
2158         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2159
2160         * arrays.cs: Add a test for 3 dimensional arrays.
2161
2162 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2163
2164         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2165         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2166         used.
2167
2168         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2169         thrown on x86.
2170
2171         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2172
2173         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2174
2175         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2176
2177 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2178
2179         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2180           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2181
2182         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2183
2184         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2185
2186         Code is contributed under MIT/X11 license.
2187
2188 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2191
2192         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2193
2194         * mini.c (mini_method_compile): Set the new flag when running under the
2195         debugger.
2196
2197 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2198
2199         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2200         a ref/noref value + a global pin flag, so parts of stack frames can still be
2201         precisely marked even if they include stuff which needs pinning. Improve logging.
2202         Fix many bugs. Not enabled yet.
2203
2204         * gc-test.cs: Add a few tests.
2205
2206         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2207         the normal -v options. Avoid propagating liveness information through bblocks
2208         which end with a NOT_REACHED opcode.
2209
2210         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2211         after cfg has been freed.
2212
2213 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2216         if a clause is skipped because it uses the exception object, since it could
2217         have caught the exception.
2218
2219         * exceptions.cs: Add a test.
2220
2221 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2222
2223        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2224
2225         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2226         ICollection<T> wrappers.
2227
2228 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2231
2232 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2235         NOMAP32BIT or optimize_for_xen is set.
2236
2237 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2240         mono_metadata_str_hash () instead.
2241
2242 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2243
2244         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2245         sizeof (void*).
2246
2247         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2248
2249 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2250
2251         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2252         flag is set.
2253
2254         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2255         throwing code correctly.
2256
2257         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2258
2259 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2260
2261         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2262         ftnptrs created by us, handle RGCTX_FETCH correctly.
2263         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2264
2265         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2266         ftnptr added by mono_aot_get_named_code ().
2267
2268 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * mini-arm.c: Fix a few LLVM problems.
2271
2272         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2273
2274 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2275
2276         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2277         AOT compiling.
2278
2279 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2280
2281         * jit.h, method-to-ir.c: added ability to set the policy for
2282         inserting breakpoints from the break IL instruction or the
2283         Debugger.Break () API call.
2284
2285 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2288         assemblies need to be eagerly loaded.
2289
2290 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2293
2294 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2295
2296         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2297         an argument which matches any exception.
2298
2299 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2302         optimization if the called method is gshared and marshalbyref, since gshared
2303         methods can' have wrappers. Fixes #569390.
2304
2305         * generics.cs: Add a test.
2306
2307 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2310         callable from gdb.
2311
2312 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2315
2316 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2319         since it is not supported in win2000.
2320
2321 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2322
2323         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2324         error if loading an assembly fails.
2325         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2326
2327         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2328         if exists.
2329
2330         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2331         compiled methods.
2332
2333         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2334
2335         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2336         is not supported yet.
2337
2338         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2339
2340 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2341
2342         * method-to-ir.c: All types with variant arguments must fallback to the
2343         slow path. This makes cast of variant delegates work.
2344
2345         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2346         argument that is set to TRUE is the returned vtable slot is for a variant
2347         interface. Changed a g_print + g_assert_not_reached to a g_error.
2348
2349         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2350         a similar fashion of generic virtual methods.
2351
2352 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2353
2354         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2355         when cfg is null.
2356
2357         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2358         method using a variance aware function.
2359
2360         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2361
2362 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2363
2364         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2365         do an icall for now.
2366
2367 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2370         If LLVM decides to set the code model to Large, reset it to Default.
2371
2372 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2375         stripped binaries as well.
2376
2377 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2378
2379         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2380         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2381
2382         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2383         reg.
2384
2385 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2386
2387         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2388         separate function.
2389
2390         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2391         as the type info to llvm.eh.selector.
2392         (exception_cb): Use the type info for filling out some fields of
2393         MonoJitExceptionInfo like the flags and the exception class. This is needed
2394         because the LLVM produced exception handling clauses might not match the original
2395         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2396
2397         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2398         separate function. Add an extra argument which returns the type infos
2399         corresponding to the exception clauses.
2400
2401         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2402         exception handling clauses.
2403
2404 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2407         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2408         to fix an AOT case.
2409
2410 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2411
2412         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2413         internal assembly.
2414
2415 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2416
2417         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2418         llvm code.
2419
2420 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2421
2422         * mini.c (mini_method_compile): Verify the method before calling
2423         mono_compile_create_vars as this might crash since it uses method
2424         information.
2425
2426         Fixes #560196.
2427
2428 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2429
2430         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2431         one case if AOTing, since the class might not be a concrete class.
2432
2433 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2434
2435         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2436         functions which are now defined in mempool-internals.h.
2437
2438         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2439
2440         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2441
2442 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2443
2444         * mini.c:
2445         * method-to.ir.c:
2446         * mini-*.c: Properly handle generic enums.
2447
2448         Fixes #566294
2449
2450 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2453         in a few more places.
2454
2455 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2456
2457         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2458         nullable parameters. Fixes #567351.
2459
2460 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2461
2462         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2463
2464 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2465
2466         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2467         mono_get_generic_context_from_code () call.
2468
2469         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2470
2471 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2474         needed.
2475
2476 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2477
2478         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2479         mono_method_get_signature returns NULL. Fix #567084
2480
2481 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2482
2483         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2484         instead of once for each module.
2485
2486 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2487
2488         * debugger-agent.c (ss_start): Implement step over for the last sequence
2489         point in methods.
2490
2491         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2492         have the STEP_LOC flag set.
2493
2494         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2495         fails. Fixes #566689.
2496
2497 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2498
2499         * mini.c (mono_add_seq_point): New helper function.
2500         (mono_save_seq_point_info): New function to save sequence point info, extracted
2501         from mini_method_compile ().
2502
2503         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2504
2505         * mini.h (MonoSeqPointInfo): New structure containing information about
2506         the sequence points of a JITted method.
2507         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2508         'bucket' field.
2509
2510         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2511         point information is stored, use a MonoSeqPointInfo structure instead of a
2512         GPtrArray. For each seq point, compute a list of successor seq points.
2513
2514         * debugger-agent.c: Use the successor list to implement step-over more
2515         efficiently: instead of single stepping until a different line/IL offset is
2516         reached, place breakpoints into all successor seq points.
2517
2518         * mini.h: Bump AOT file format version.
2519
2520 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2521
2522         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2523
2524         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2525
2526 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2527
2528         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2529         build.
2530
2531 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2532
2533         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2534         alloca as g_malloc is not signal safe.
2535
2536 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2537
2538         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2539         VALGRIND_DISCARD_TRANSLATIONS.
2540
2541         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2542         checks, they are no longer needed.
2543
2544         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2545         a function into a sigctx which can handle function pointers.
2546
2547         * mini-ppc.c: Implement soft debugger support on ppc64.
2548
2549         * mini-ppc.c: Implement soft debugger support.
2550
2551 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2552
2553         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2554
2555 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2556
2557         * mini.c (mono_get_runtime_build_info): include Mono version in
2558         the returned value.
2559
2560         * driver.c (mono_main): VERSION is now included in the string
2561         returned from mono_get_runtime_build_info()
2562
2563 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2564
2565         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2566         signatures. Fixes #565143.
2567
2568         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2569
2570 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2571
2572         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2573
2574 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2575
2576         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2577         making max stack 10x smaller.
2578
2579 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2580
2581         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2582
2583 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2584
2585         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2586
2587 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2588
2589         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2590         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2591
2592         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2593
2594         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2595
2596         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2597
2598         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2599         the compilation.
2600
2601 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2602
2603         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2604         raise an invalid program exception.   
2605
2606         For other opcodes that we might not handle use a g_warning and
2607         raise the exception.   Beats termination.
2608
2609         Fixes #561724
2610
2611 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2612
2613         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2614
2615         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2616         by merging the LLVM and !MAP_32BIT cases.
2617
2618 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2619
2620         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2621         sigctx being passed in, as we have no CONTEXT available in the APC.
2622
2623         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2624         for now.
2625
2626         Code contributed under MIT/X11 license.
2627
2628 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2629
2630         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2631         in the LLVM backend on AMD64.
2632
2633         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2634         FDE.
2635
2636         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2637
2638         * mini-llvm.c: Export mono_personality for AOT.
2639
2640         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2641
2642         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2643         implicit exception can occur.
2644
2645         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2646         OP_IMPLICIT_EXCEPTION instruction.
2647
2648         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2649
2650         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2651
2652         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2653         inside a protected block.
2654
2655         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2656         trampolines doesn't include the argument.
2657
2658         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2659         trampolines on amd64.
2660
2661         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2662         of RDI.
2663
2664         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2665         disabled for methods with clauses.
2666
2667         * mini-llvm.c: Enable support for catch clauses.
2668
2669         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2670         end of an LLVM compiled finally clause.
2671         (mono_handle_exception_internal): Save the exception handling state in TLS
2672         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2673         resume unwinding from that point.
2674
2675         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2676         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2677         to obtain the addresses of the exception handling regions.
2678
2679         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2680         finally clauses are supported.
2681
2682         * mini.c (mini_method_compile): Add support for LLVM code with exception
2683         handlers.
2684
2685 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2686
2687         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2688         proper size.
2689
2690 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2691
2692         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2693         as a primitive type.
2694
2695 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2698         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2699         #564000.
2700
2701 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2702
2703         * method-to-ir.c (mini_redirect_call): do not redirect the
2704         InternalAllocateStr internal call if string profiling is enabled.
2705
2706 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2709         generic methods.
2710
2711         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2712         unwind.h header file.
2713
2714         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2715         newer valgrind versions seems to handle this fine.
2716
2717 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2718
2719         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2720         on the debugger thread.
2721
2722 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2723
2724         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2725
2726         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2727
2728         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2729
2730         * cpu-<ARCH>.md: Make call_handler clob:c.
2731
2732         * mini.c: Reenable SSA for methods with clauses.
2733
2734         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2735         as it causes failures on x86.
2736
2737 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2738
2739         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2740         returns NULL (e.g. a bad assembly).
2741
2742 2009-12-08  Geoff Norton  <gnorton@novell.com>
2743
2744         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2745         stepping out into native code.  There were issues with nested invokes
2746         like .cctors.
2747
2748 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2749
2750         * mini.c (mini_method_compile): Do the disable_llvm checks early
2751         and avoid the LLVM compile pass if the checks fail.
2752
2753         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2754
2755         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2756         LLVM optimizations don't try to remove them.
2757
2758         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2759         different file so the original remains.
2760
2761 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2762
2763         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2764
2765         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2766
2767         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2768         support for non-inline unwind descriptors.
2769
2770 2009-12-07  Geoff Norton  <gnorton@novell.com>
2771
2772         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2773         the interrupt_count slightly differently.  Native threads were never
2774         marked as resumed.
2775
2776 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2777
2778         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2779         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2780         yet generate this info.
2781
2782         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2783
2784         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2785         client can distinguish between intptrs and longs.
2786
2787 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2790         blob.
2791
2792         * aot-runtime.c (load_function): Update after the change above.
2793
2794         * mini.h: Bump AOT file format version.
2795
2796         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2797         if the delegate class is dynamic.
2798
2799         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2800         in gshared code too using the new rgctx info type
2801         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2802
2803 2009-12-04  Geoff Norton  <gnorton@novell.com>
2804
2805         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2806         we need to track the original suspend count so the thread properly
2807         wakes up in resume_thread.
2808
2809 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2810
2811         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2812         code.
2813
2814         * generics.cs: Add a test.
2815
2816         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2817         is 0. Simplify a lot of code using this.
2818
2819         * mini-trampolines.c (mono_delegate_trampoline): Call
2820         mono_create_static_rgctx_trampoline () before saving the final address in
2821         delegate->method_code, to avoid calling it each time a delegate is first called.
2822
2823         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2824         which need static rgctx trampolines.
2825
2826         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2827         keyed on the method+addr pair, since addr could be either the method addr or
2828         an unbox trampoline in the AOT case. Fixes #560246.
2829
2830 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2833         place it was called before too.
2834
2835 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2836
2837         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2838         if no security manager is present, to speed up the AOT case. Call
2839         mono_class_vtable () full with raise_on_error == TRUE instead.
2840
2841 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2842
2843         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2844         the local optimization passes can take its result into account. Fixes
2845         #559876.
2846
2847         * exceptions.cs: Add a test.
2848
2849 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2850
2851         This patch is contributed under the terms of the MIT/X11 license
2852
2853         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2854
2855 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2858
2859         * debugger-agent.c: Rework the handling of stack traces of running threads to
2860         avoid crashes if compute_frames () tries to walk the stack of running thread.
2861
2862         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2863
2864         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2865
2866         * mini.h (StackFrameInfo): Add an 'lmf' field.
2867
2868 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2869
2870         * debugger-agent.c (suspend_current): Always set really_suspended.
2871
2872         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2873
2874         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2875
2876 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2879         really suspended.
2880
2881 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2882
2883         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2884
2885 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2886
2887         * mini-trampolines.c: Fix MSVC build.
2888
2889 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2890
2891         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2892
2893 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2896         the instruction following an OP_FCOMPARE is optimized away.
2897
2898 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2899
2900         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2901         emit_autoreg () into this arch-specific function.
2902
2903         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2904         code, it is no longer needed.
2905
2906         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2907
2908         * mini.h: Bump AOT file format version.
2909
2910         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2911         using the sorted_code_offsets array, instead of reading it from the
2912         exception debug info.
2913         (load_method): Call mono_aot_find_jit_info instead of
2914         decode_exception_debug_info ().
2915
2916         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2917         LLVM compiled as a flag.
2918
2919 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2920
2921         * debugger-agent.c (resume_thread): Fix a warning.
2922
2923         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2924         generated.
2925
2926 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2929         contents to MonoAotFileInfo.
2930
2931 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2934         Put all binary data into a giant blob, similarly to the way .net assemblies
2935         store binary data. Emit offset tables in a compact form to reduce their size.
2936
2937         * mini.h: Bump AOT file format version.
2938
2939         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2940         places.
2941
2942         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2943         avoid linear searches at runtime.
2944
2945         * aot-runtime.c (find_symbol): Update this to use the hash.
2946
2947         * mini.h: Bump AOT file format version.
2948
2949 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2952         container.
2953
2954         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2955         too.
2956
2957         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2958         the distribution of got slot types.
2959
2960         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2961
2962         * method-to-ir.c: Add support for generating explicit null checks.
2963
2964 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2965
2966         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2967         on a random thread if possible.
2968
2969         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2970         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2971         correctly.
2972
2973         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2974         regs. Pass the real size of the regs array to mono_unwind_frame ().
2975
2976         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2977         ones instead.
2978
2979 2009-11-24  Geoff Norton  <gnorton@novell.com>
2980
2981         * mini-darwin.c: Work around apple bug rdar://7209349  See
2982         http://openradar.appspot.com/7209349 for details.  Synopsis,
2983         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2984         never been initialized before.
2985
2986 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2987
2988         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2989
2990         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2991
2992 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2993
2994         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2995         OP_SHL_IMM is not 32 bit.
2996
2997 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2998
2999         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3000
3001 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3002
3003         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3004         encountered.
3005
3006         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3007         > 0 since some threads can resume if their resume_count is > 0.
3008         (invoke_method): Avoid reading freed memory.
3009
3010         * debugger-agent.c (process_suspend): Extract the suspend code from
3011         process_single_step_inner () to a separate function. Rework the code to prevent
3012         races between this function and thread interrupts.
3013
3014         * debugger-agent.c (suspend_current): Check the resume_count field instead
3015         of resume_one so suspends+resumes during single threaded invokes work
3016         correctly.
3017
3018 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3021         to make the generated code smaller.
3022
3023         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3024         sequence generated by recent LLVM versions.
3025
3026         * mini-llvm.c: Add support for a few simple cases which weren't supported
3027         before.
3028
3029         * mini-trampolines.c (mono_magic_trampoline): Don't call
3030         mono_arch_get_vcall_slot () when llvm is enabled.
3031
3032         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3033
3034         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3035         into a new function called common_call_trampoline () which is used by the
3036         llvm vcall trampoline as well.
3037
3038         * debugger-agent.c: Implement single threaded invokes.
3039
3040         * debugger-agent.c: Revert change which broke the agent on linux.
3041
3042         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3043         #557606.
3044
3045         * generics.cs: Add a test.
3046
3047 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * debugger-agent.c: Fix the cygwin build.
3050
3051 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * cprop.c: Remove this unused file.
3054
3055 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3056
3057         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3058         #557262.
3059
3060         * basic.cs: Add a test.
3061
3062 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3065         in one more place.
3066
3067 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3068
3069         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3070         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3071         it. Use this flag to control llvm related code paths instead of #ifdef
3072         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3073         AOT code.
3074
3075         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3076
3077         * mini.h: Bump AOT file format version.
3078
3079         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3080         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3081
3082         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3083         was used as an assembly filter.
3084
3085 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3086
3087         * unwind.c: Fix support for ppc.
3088
3089         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3090         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3091
3092 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3093
3094         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3095         port.
3096         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3097         added by the ps3 changes.
3098
3099 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3100
3101         * mini-gc.c: Resurrect this, so at least it compiles.
3102
3103         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3104
3105 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3106
3107         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3108         create_event_list () so assembly filters can be used.
3109
3110         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3111         from the LMF.
3112
3113 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3114
3115         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3116         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3117         is disabled.
3118
3119         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3120         classes for char/bool too.
3121
3122         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3123
3124         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3125         used.
3126
3127         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3128         Fix warnings.
3129
3130 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3131
3132         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3133         
3134         Code contributed under MIT/X11 license.
3135
3136 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3137
3138         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3139         threads in native code work.
3140
3141         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3142         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3143         version.
3144
3145 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3146
3147         * debugger-agent.c: Implementation for Windows platform.
3148
3149         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3150         primitives. Use SEH to implement breakpoints and single stepping.
3151
3152         * mini-x86.h: Enable soft debugger on Windows.
3153
3154         Code contributed under MIT/X11 license.
3155
3156 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3157
3158         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3159         under XEN. Fixes #522894.
3160
3161         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3162
3163         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3164         interface calls in LLVM AOT code.
3165
3166         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3167         is found.
3168
3169         * mini-llvm.c: Add support for OP_VPHI.
3170
3171         * objects.cs: Add a test.
3172
3173 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3174
3175         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3176         this is called on the debugger thread.
3177
3178 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3179
3180         * mini-llvm.c: Add soft-float support.
3181
3182         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3183         FCALL which returns an R4.
3184
3185         * driver.c (mono_main): Add a missing '\n'.
3186
3187         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3188         platforms which doesn't support the LLVM IMT trampoline.
3189
3190 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3193
3194         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3195
3196         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3197         virtual calls.
3198
3199         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3200
3201 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3202
3203         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3204         Instead of emitting a method_order table, sort the contents of the code_offsets
3205         table and do a binary search in the sorted table. The previous approach doesn't
3206         work with LLVM which emits methods in a arbitrary order.
3207
3208         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3209         in the .eh_frame section in ELF files.
3210
3211         * mini.h: Bump corlib file format version.
3212
3213         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3214
3215         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3216         LDMIA->LDM macro name change.
3217
3218 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3219
3220         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3221         x86.
3222
3223         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3224         SVN.
3225
3226         * aot-compiler.c: Ditto.
3227
3228         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3229         &align to mini_type_stack_size_full ().
3230
3231         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3232
3233         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3234
3235 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * mini-arm.c: Compute the stack space used by arguments using
3238         mini_type_stack_size_full ().
3239
3240 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3241
3242         * optflags-def.h: Remove dead TREEPROP optimization.
3243
3244 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3245
3246         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3247
3248         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3249
3250 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * driver.c (mono_jit_parse_options): New public API function to parse options
3253         as done by the runtime executable.
3254
3255         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3256         when handling named arguments.
3257
3258 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3261         for passing small vtypes in registers, make the CallInfo structures more
3262         similar to the code on the other platforms.
3263
3264         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3265         the code in the prolog requires it.
3266
3267 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3268
3269         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3270         (koush@koushikdutta.com).
3271
3272         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3273         where the thunk memory should be allocated from. Fixes appdomain unloading
3274         on arm.
3275
3276 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3277
3278         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3279         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3280
3281 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3282
3283         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3284         AOT, as it is not implemented yet.
3285
3286         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3287
3288 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3289
3290         * debugger-agent.c: Fix windows build.
3291
3292 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3293
3294         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3295         after the client connects/disconnects.
3296
3297         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3298         when an exception of a given type is thrown.
3299
3300         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3301         only on an uncaught exception.
3302
3303         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3304
3305         * debugger-agent.c: Add a 'launch' option.
3306
3307 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3308
3309         * debugger-agent.c: Add a 'timeout' option.
3310
3311 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3312
3313         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3314         the JDWP agent.
3315
3316 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3317
3318         * debugger-agent.c (set_breakpoint): Emit a log message.
3319
3320 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3321
3322         * mini-arm.c: Fix the arm build.
3323
3324 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3325
3326         * aot-compiler.c: don't leak the value returned from
3327         mono_type_full_name().
3328
3329 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3330
3331         * debugger-agent.c: defer including mono-mutex.h until we know the
3332         agent is supported.
3333
3334 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3335
3336         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3337         of pthreads directly.
3338
3339         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3340         exception handlers. Pass info argument.
3341
3342         * mini.h: Adjust signatures of soft debugger functions to pass void*
3343         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3344
3345         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3346         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3347         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3348         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3349
3350         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3351
3352         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3353         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3354         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3355         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3356
3357         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3358
3359         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3360
3361         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3362
3363         * mono-semaphore.h: Skeleton implementation for Windows.
3364
3365         Code contributed under MIT/X11 license.
3366
3367 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3368
3369         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3370
3371         Code contributed under MIT/X11 license.
3372
3373 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3374
3375         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3376
3377         Code contributed under MIT/X11 license.
3378
3379 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3380
3381         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3382         debug info to 100 because 10 still slows down gdb too much.
3383
3384         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3385         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3386         them in the wrappers.
3387
3388 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3389
3390         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3391
3392         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3393
3394         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3395         function mono_aot_get_array_helper_from_wrapper ().
3396
3397         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3398         array helper methods.
3399
3400 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3401
3402         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3403         the value was loaded from memory.
3404
3405         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3406         the value was loader from there.
3407
3408         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3409         without constant swizzle.
3410
3411 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3412
3413         * mini-amd64.c: Put soft debugger functions behind a
3414         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3415
3416         * mini-amd64.h: disable the soft debugger in windows.
3417
3418         Code contributed under MIT/X11 license.
3419
3420 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3421
3422         * mini-x86.c: Put soft debugger functions behind a
3423         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3424
3425         Code contributed under MIT/X11 license.
3426
3427 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3428
3429         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3430         to mono_arch_find_jit_info_ext.
3431
3432         Code contributed under MIT/X11 license.
3433
3434 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3435
3436         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3437
3438         * debugger-agent.c: Add support for filtering events by assemblies.
3439
3440         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3441         the agent is not enabled.
3442
3443 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3444
3445         * exceptions-x86.c: hopefully last change to fix the windows build.
3446         This one courtesy of Jonathan Chambers.
3447
3448 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3449
3450         * debugger-agent.c: remove unused function.
3451
3452 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3453
3454         * debugger-agent.c: add #ifdefs for a few header files.
3455         * mini-x86.h: disable the soft debugger in windows.
3456         Step 1 of 2 to make this compile on windows with gcc.
3457
3458 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3461         as it breaks the build.
3462
3463 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3464
3465         Merge the soft debugger branch.
3466
3467         * debugger-agent.h debugger-agent.c: New files containing the soft
3468         mode debugger module.
3469
3470         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3471         at the appropriate locations.
3472
3473         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3474         opcode.
3475
3476         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3477         enable/disable single stepping.
3478
3479         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3480         which returns all information in a StackFrameInfo structure, and can handle the
3481         LMF frames added by the debugger.
3482
3483         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3484         about an LMF frame.
3485
3486         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3487         walker function which works on a specific thread and passes a StackFrameInfo
3488         structure to its callback.
3489
3490         * mini.c (mini_init): Initialize the debugger agent.
3491
3492         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3493
3494         * mini-ops.h: Add OP_SEQ_POINT opcode.
3495
3496         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3497         arguments to the debugger agent.
3498
3499 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3500
3501         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3502         speed things up.
3503
3504         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3505
3506         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3507
3508         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3509
3510         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3511         if needed.
3512         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3513         sets the IMT argument and makes a virtual call.
3514
3515         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3516
3517 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3518
3519         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3520         the windows build.
3521
3522 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3525         runtime. Fixes #551228.
3526
3527 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3528
3529         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3530
3531         * basic.cs: Add a test.
3532
3533         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3534         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3535         CONSTRAINED. Fixes #550964.
3536
3537         * generics.cs: Add a test.
3538
3539 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3540
3541         * mini-posix.c (add_signal_handler): Use
3542         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3543
3544 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3545
3546         Contributed under the terms of the MIT/X11 license by
3547         Jerry Maine <crashfourit@gail.com>.
3548
3549         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3550         sse4a for simd intrinsics.
3551
3552         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3553         sse4a for simd intrinsics.
3554
3555 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3556
3557         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3558         instead of inst_p1 which is not the same on ILP32 platforms.
3559
3560 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3561
3562         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3563         not the mscorlib one before calling mono_get_lmf_addr.
3564
3565         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3566         of the ip to the LMF.
3567
3568         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3569         immediate in the op->op_imm optimization.
3570
3571         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3572         understand. VTypes now work, but are not abi compliant, as they are
3573         split into 4 byte parts instead of 8.
3574         (emit_memcpy): Fix the unrolled case to work on the PS3.
3575
3576         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3577
3578         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3579         the default when static linking.
3580
3581         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3582
3583         * aot-compiler.c: Add an autoreg option to automatically register
3584         statically linked aot modules using ELF .ctors.
3585
3586         * genmdesc.pl: Add __ppc64__ to allowed defines.
3587
3588 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3589
3590         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3591         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3592
3593 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3594
3595         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3596
3597 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3600         which will contain the domain where the method was found.
3601
3602         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3603         mini_jit_info_table_find ().
3604
3605         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3606
3607         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3608
3609 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3610
3611         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3612         set, its not supported yet.
3613
3614 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3615
3616         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3617         iface wrapper is not found.
3618         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3619
3620 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3623         which have a different name.
3624
3625         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3626         wrappers and Array.GetGenericValueImpl ().
3627
3628         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3629         because of the change above.
3630
3631         * generics.cs: Add a test for full aot + generic array ifaces.
3632
3633 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3634
3635         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3636         that hides the previous one.
3637
3638 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3639
3640         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3641         marshalled. Fixes #541623.
3642
3643 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3644
3645         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3646
3647 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3648
3649         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3650
3651 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3652
3653         * mini-posix.c (sigprof_signal_handler):
3654         Implemented support for building stat call chans in different ways.
3655
3656 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3657
3658         * mini-exceptions.c (mono_find_jit_info):
3659         Also check that a jit info has been found (fixes a profiler crash).
3660
3661 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3662
3663         * mini.c (mono_codegen):
3664         Call mono_profiler_code_buffer_new with correct code address.
3665
3666 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3667
3668         * driver.c (mono_main): Change the date in the copyright.
3669
3670 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3671
3672         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3673         allocator in shared generic code for open classes, because we
3674         can't get those classes' vtables.  We need to make managed
3675         allocators not depend on the vtable at compile-time to solve this.
3676
3677 2009-10-13  Martin Baulig  <martin@ximian.com>
3678
3679         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3680         `const guint8 *trampoline' argument; send both the old and the new
3681         notification.
3682
3683 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3684
3685         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3686         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3687         (can_marshal_struct): Skip structures with auto layout.
3688
3689         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3690
3691 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3694         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3695         a variable to hold the stack slot used by the int<->float conversion opcodes.
3696
3697         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3698
3699 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3700
3701         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3702         when using full-aot.
3703
3704 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3705
3706         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3707         each instance of Comparer<T>.
3708
3709         * generics.cs: Add a new test.
3710
3711 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3712
3713         * driver.c (parse_debug_options): Add a 'gdb' option.
3714
3715         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3716
3717         * image-writer.c: Add support for emitting the image into a memory buffer.
3718
3719         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3720
3721         * aot-compiler.c: Add support for registering debug info with GDB using the
3722         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3723         MONO_XDEBUG to 'gdb'.
3724
3725 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3726
3727         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3728         gdb mode.
3729
3730 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3731
3732         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3733         can be used to set breakpoints in gdb.
3734
3735         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3736         segment to an absolute address.
3737
3738 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3739
3740         * method-to-ir.c: Use the managed array allocator method if
3741         available.
3742
3743 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3744
3745         * aot-compiler.c : Fix the MSVC builds
3746
3747         Code is contributed under MIT/X11 license.
3748
3749 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3752         avoid registering 1 symbol file per method with gdb.
3753
3754 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * mini-sparc.c: Fix the handling of enums with base type long.
3757
3758         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3759
3760         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3761         instead of using type->data.klass as the later doesn't work with generics.
3762
3763 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3764
3765         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3766         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3767         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3768         works differently now and we don't handle it in the JIT anymore.
3769
3770         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3771         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3772         the Thread class split.
3773
3774 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3775
3776         * driver.c: Don't run tests with the obsolete treeprop optimization.
3777
3778         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3779         variable volatile. Fixes #541577.
3780
3781         * basic-calls.cs: Add a new test.
3782
3783         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3784
3785 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3786
3787         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3788         work/required with recent iphone sdk versions.
3789
3790         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3791         structures.
3792
3793         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3794         in the VCALL decomposition code.
3795
3796 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3799
3800         * basic.cs: Add a test.
3801
3802         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3803         generic invokes.
3804
3805         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3806         searches all the domains of the current thread.
3807
3808         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3809
3810 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3813         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3814
3815         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3816         for non-jit trampolines.
3817
3818         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3819
3820         * aot-compiler.c (add_wrappers): Ditto.
3821
3822         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3823         the size of the param area used by dyn_call to 6 which covers the majority of
3824         methods.
3825
3826         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3827
3828         * mini-arm.c: Implement support for passing/receiving
3829         longs and receiving floats in the dyn_call code.
3830
3831         * mini-amd64.c: Implement support for receiving vtypes in registers in
3832         the dyn_call code.
3833
3834         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3835         the dyn_call code.
3836
3837 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3838
3839         * mini-arm.c (get_call_info): Return more precise information in
3840         ArgInfo->regtype.
3841         (dyn_call_supported): Use the information in CallInfo.
3842
3843         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3844
3845         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3846         code.
3847
3848         * mini-arm.c: Update after the dyn_call api changes.
3849
3850         * mini.c (mini_create_jit_domain_info): Register a destructor function
3851         for the runtime_invoke_hash.
3852
3853         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3854         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3855         this function.
3856         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3857         (dyn_call_supported): Simplify this by using get_call_info ().
3858         (mono_arch_dyn_call_free): New destructor function.
3859
3860         * generics.cs: Remove a printf.
3861
3862         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3863
3864         * mini-arm.c: Add support for enum return values and passing a few arguments
3865         on the stack.
3866         
3867         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3868         dyn invoke.
3869
3870         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3871
3872         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3873         the dynamic invoke wrappers.
3874
3875         * mini-arm.c: Implement OP_DYN_CALL for arm.
3876
3877         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3878         supported by the dynamic runtime invoke wrapper.
3879
3880         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3881         runtime invoke wrapper.
3882
3883         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3884         if possible when running with full-aot.
3885
3886         * mini-ops.h: Add OP_DYN_CALL opcode.
3887
3888         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3889         with dynamic arguments lists similar to libffi.
3890
3891 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3892
3893         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3894         
3895         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3896         to NEWARR.
3897
3898         * iltests.il.in: Add a new test.
3899         
3900 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * aot-compiler.c (add_generic_instances): Add more instances of
3903         GenericEqualityComparer.
3904
3905 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3906
3907         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3908
3909 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3910
3911         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3912         comments on some functions that now can fail.
3913
3914 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3915
3916         * Makefile.am: Add Info.plist to EXTRA_DIST
3917
3918 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3919
3920         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3921         static synchronized wrappers. Fixes #539500.
3922
3923 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3924
3925         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3926         properly.
3927
3928 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3929
3930         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3931         lmf before calling filter clauses as well. Fixes #539550.
3932
3933         * exceptions.cs: Add a test.
3934         
3935 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * aot-compiler.c (add_generic_class): Add instances of
3938         Array.GetGenericValueImpl as well.
3939
3940         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3941         can be tested too.
3942
3943         * generics.cs: Add a fullaot linq test.
3944
3945 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3946
3947         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3948         reg r1 on arm.
3949
3950 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3951
3952         * mini-trampolines.c (mono_delegate_trampoline) : Call
3953           mono_cominterop_get_invoke if the delegate target object
3954           is a COM object.
3955
3956         Code is contributed under MIT/X11 license.
3957
3958 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3959
3960         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3961         internal call is defined outside platform code. Reduce code 
3962         duplication with existing [Method|Field]AccessException
3963
3964 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3965
3966         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3967         if the return value is a small struct passed on regs.
3968
3969 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3970
3971         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3972
3973         * mini-codegen.c: Enable the cpu description validation for arm.
3974
3975 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3978         test which depends on structs to objects.cs.
3979         
3980         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3981         require object model related stuff working.
3982
3983         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3984
3985         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3986
3987         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3988         against the instruction metadata in mini-ops.h. amd64 only for now.
3989
3990         * mini-ops.h: Fix some instruction descriptions.
3991
3992         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3993         unused instructions.
3994
3995 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3996
3997         * exceptions.cs: Add a new test.
3998
3999 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4000
4001         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4002
4003 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4006         skip empty phi opcodes.
4007         
4008         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4009         correctly by zero extending after loads. Skip methods containing calls
4010         to the monitor enter/exit trampolines.
4011
4012         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4013         when calling mono_thread_force_interruption_checkpoint ().
4014
4015         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4016
4017         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4018         64 bit thunks.
4019         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4020
4021         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4022         bootstrap could run.
4023
4024 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4025
4026         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4027
4028 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4029
4030         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4031         of the method to
4032         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4033         LLVM might be very short.
4034
4035         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4036         in OP_THROW/RETHROW.
4037
4038         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4039         alignment on osx.
4040
4041 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4042
4043         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4044         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4045         LLVM might be very short.
4046
4047 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4048
4049         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4050         the alignment for the value of sp.
4051
4052 2009-09-01  Geoff Norton  <gnorton@novell.com>
4053
4054         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4055         managed wrappers in full aot.
4056
4057 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4058
4059         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4060
4061 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4062
4063         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4064
4065 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4066
4067         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4068
4069         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4070         saved info.
4071
4072         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4073
4074         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4075         depend on the info MonoMethodHeader which could be missing in IL stripped
4076         assemblies.
4077
4078 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4081         they are only 4 byte aligned.
4082
4083 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4086         was done previously, since using SP causes too many problems.
4087
4088         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4089         frames without a frame pointer works.
4090
4091         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4092         global register in methods with calls, since the calls can go through
4093         a static rgctx trampoline which doesn't save it.
4094
4095 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4096
4097         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4098
4099 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4102
4103 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4104
4105         * method-to-ir.c: Fix warnings for uninitialized variables.
4106
4107 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4108
4109         * mini-exceptions.c:
4110         * aot-compiler.c: Fix printf warnings.
4111
4112 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4113
4114         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4115         Add GetGenericValueImpl<string>.
4116         
4117         * aot-compiler.c (add_generic_instances): Add instances of
4118         GenericEqualityComparer<T> for primitive types. Only emit the array
4119         wrappers into the mscorlib image.
4120
4121 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4122
4123         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4124         the methods_loaded array using amodule->info->nmethods.
4125
4126         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4127         (MONO_AOT_FILE_VERSION): Bump this.
4128
4129         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4130         to work.
4131
4132         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4133         MonoJitInfo doesn't belong to its methods aot image.
4134
4135 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4136
4137         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4138
4139         * mini-arm.c: Fix warnings.
4140         
4141         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4142
4143         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4144         supports it.
4145
4146 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4149         avoid clobbering IP.
4150
4151         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4152         hold the trampoline argument, so its initial value is available during
4153         debugging.
4154
4155 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4156
4157         * exceptions-arm.c:
4158         * exceptions-hppa.c:
4159         * mini.c:
4160         * exceptions-s390x.c:
4161         * exceptions-mips.c:
4162         * exceptions-ppc.c:
4163         * exceptions-sparc.c:
4164         * exceptions-alpha.c:
4165         * aot-runtime.c:
4166         * mini-trampolines.c:
4167         * exceptions-x86.c:
4168         * exceptions-s390.c: add and use #define's instead of sizeof()
4169         for MonoJitInfo and MonoJitInfoTable.
4170
4171 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4172
4173         * tramp-arm.c:
4174         * tramp-amd64.c:
4175         * tramp-ppc.c:
4176         * tramp-x86.c: use a #define instead of sizeof() for a few
4177         structures that use a zero-length array.
4178
4179 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4180
4181         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4182         case when the method is dynamic. Fixes #529238.
4183
4184 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4185
4186         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4187         of asserting when a method is JIT compiled in full-aot mode.
4188
4189 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4190         
4191         Contributed under the terms of the MIT/X11 license by
4192         Jerry Maine <crashfourit@gail.com>.
4193         
4194         * fixed wrong dates in changelog.
4195
4196 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4197         
4198         Contributed under the terms of the MIT/X11 license by
4199         Jerry Maine <crashfourit@gail.com>.
4200
4201         * basic-simd.cs: added test for packed double square root.
4202         * cpu-amd64.md: added opcode info for packed double square root.
4203         * cpu-x86.md: added opcode info for packed double square root.
4204         * mini-ops.h: added IR opcode for packed double square root.
4205         * mini-x86.c: added IR to native translation code for packed double square root.
4206         * mini-amd64.c: removed todo for packed double square root.
4207         * simd-intrinsics.c: added method to IR opcode converstion for
4208         packed double square root.
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         * mini-amd64.c: Added a change to help tell the difference as 
4216         to what perpose the xmm register is being used--mainly to help
4217         with debuging.
4218         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4219         (one used for special cases) xmm registers for both fp
4220         and simd ops. Added define to turn on new feature in the regalloc
4221         that allows fp and simd ops to share the xmm regs happily.
4222         * codegen.c: Added code to detect for which perpose an xmm reg is
4223         being used (fp or simd) and to translate back and forth to the
4224         correct logical reg bank (fp or simd) for 'spill load's.
4225
4226 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4227
4228         Contributed under the terms of the MIT/X11 license by
4229         Jerry Maine <crashfourit@gail.com>.
4230
4231         * basic-simd.cs: Added tests for stressing the regalloc when running with
4232         16 simd regs and when simd and fp ops share the same reg bank.
4233
4234 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4235
4236         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4237         in shared generic code, we might have to look up the class in the
4238         RGCTX.  If we use the class directly, compute its GC descriptor.
4239
4240 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4241
4242         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4243
4244 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4245
4246         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4247         check for errors. Fixed the case when the class with the Main
4248         method is broken.
4249
4250 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4251
4252         Contributed under the terms of the MIT/X11 license by
4253         Jerry Maine <crashfourit@gail.com>.
4254
4255         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4256
4257 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4258
4259         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4260
4261 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4262
4263         * method-to-ir.c: Fix naming of stelem and ldelem.
4264
4265 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4266
4267         * driver.c (main_thread_handler): Check that the assembly loaded
4268         matches the filename when doing AOT.
4269
4270 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4271
4272         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4273         call it anymore.
4274
4275         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4276         utils/mono-sigcontext.h).
4277
4278         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4279         #ifdef.
4280
4281 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4282
4283         * mini.c (mono_codegen):
4284         Call profiler hook to keep track of method code buffers.
4285
4286 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4287
4288         * method-to-ir.c: Invoke write barriers for the
4289         Interlocked.(Compare)Exchange JIT intrinsics.
4290
4291 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4292
4293         * Makefile.am (version.h): Fix issues when built out of tree.
4294         Remove some redundant 'grep's piped through 'sed's.
4295
4296 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4297
4298         This patch is contributed under the terms of the MIT/X11 license
4299
4300         * mini-ppc.c (mono_arch_output_basic_block):
4301         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4302         for bits 32-47 with signed load/store diplacements for bits
4303         48-63.  Use prefered base/offset order for indexed form.
4304         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4305         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4306         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4307         OP_LOADI2_MEMBASE): Same.
4308         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4309         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4310         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4311         indexed form.
4312         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4313         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4314         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4315         OP_LOADI1_MEMINDEX): Same
4316         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4317         OP_STORER8_MEMINDEX): Same
4318         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4319         computations.
4320         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4321         for bits 32-47 with signed load/store diplacements for bits
4322         48-63.  Use prefered base/offset order for indexed form.
4323
4324 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4325
4326 This patch is contributed under the terms of the MIT/X11 license
4327
4328         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4329         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4330         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4331         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4332         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4333         cfg->stack_usage to avoid size warnings.
4334         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4335         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4336         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4337         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4338         to convert.
4339         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4340         after code varible is initialized.
4341         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4342         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4343         (mono_arch_emit_epilog): 
4344         Move Use ppc_load32 for cfg->stack_usage to avoid size
4345         warnings.
4346
4347 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4348
4349         * method-to-ir.c: The write barrier doesn't do the store anymore,
4350         so we have always to emit it.  Also, emit the wbarrier after the
4351         store.
4352
4353 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4354
4355         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4356         for argument count 3 too.
4357
4358 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4359
4360         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4361         the caller handle the exceptions.
4362         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4363         method. Fixes #524498.
4364
4365 2009-07-22  Geoff Norton  <gnorton@novell.com>
4366
4367         * mini-exceptions.c: Fix build on ia64.
4368
4369 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4370
4371         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4372         barriers.
4373
4374 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4377         code.
4378
4379 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * basic-simd.cs (Main): Pass args to the test driver.
4382
4383 2009-07-20  Geoff Norton  <gnorton@novell.com>
4384
4385         * mini-x86.h: Fix the x86 version guards to use Apple's
4386         properly defined macros.
4387
4388 2009-07-20  Geoff Norton  <gnorton@novell.com>
4389
4390         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4391         aligned access.
4392
4393 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4394
4395         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4396         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4397         the information which is needed for invokes, so only one locking+hash table
4398         lookup is needed.
4399
4400         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4401         
4402         * aot-compiler.c (add_generic_instances): Emit instances of 
4403         GenericComparer<T> for primitive types.
4404
4405 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4406
4407         * mini-posix.c: Fix linux build.
4408
4409 2009-07-19  Geoff Norton  <gnorton@novell.com>
4410
4411         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4412         mono_gdb_render_native_backtraces
4413         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4414         so we implement the sane semantics to the runtime here
4415         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4416         so we need to call it differently (mono_gdb_render_native_backtraces)
4417         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4418         here for default implementations.
4419         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4420         support Apple's weird syscall (SYS_fork) implementation and not busy
4421         loop in abort() on native crashes on OSX anymore.
4422
4423 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4424
4425         * aot-runtime.c (load_method): Change the handling of the
4426         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4427         are used.
4428
4429         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4430
4431 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4432
4433         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4434         seems to break the aot tests.
4435         
4436         * mini.c (mono_patch_info_equal): Fix the handling of 
4437         MONO_PATCH_INFO_RGCTX_FETCH.
4438
4439 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4440
4441         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4442
4443         * mini.c (mono_patch_info_hash): Fix the handling of 
4444         MONO_PATCH_INFO_INTERNAL_METHOD.
4445         (mono_patch_info_equal): Ditto.
4446
4447 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4448
4449         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4450         in a few places.
4451         
4452         * mini-llvm.c: Add some infrastructure for AOT support.
4453
4454 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4455
4456         * mini-llvm-cpp.c: Update to the latest llvm api.
4457         
4458         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4459         option to false to prevent llvm from installing signal handlers which
4460         trip up the gc.
4461         
4462 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4463
4464         * cpu-x86.md:
4465         * cpu-amd64.md: Revert previous change as those instructions
4466         take 2 separate arguments. Remember to read the arch docs more
4467         carefully next time.
4468
4469 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4470
4471         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4472
4473 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4474
4475         * mini-ppc.c: exploit multiple load/store units if available (rest of
4476         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4477         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4478
4479 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4480
4481         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4482         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4483
4484 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4485
4486         * cpu-x86.md: Fix missing clobbering from trancendental simd
4487         ops.
4488
4489         * cpu-amd64.md: Same.
4490
4491 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4492
4493         Contributed under the terms of the MIT/X11 license by
4494         Jerry Maine <crashfourit@gail.com>.
4495
4496         * basic-simd.cs: Added tests for single and doulble indexers.
4497
4498         * cpu-amd64.md: Added simd opcode information.
4499
4500         * mini-amd64.c: Added IR to native simd generation code.
4501         Added simd register names and function that returns them.
4502
4503         * mini-amd64.h: Added marcos to turn on simd code compilation in
4504         amd64. Added max simd register count marco. Added caller/callee
4505         register mask marcos. Added marcos to use simd register bank.
4506
4507         * mini.h: Added helper marco for shufling dwords and simple
4508         floats.
4509
4510 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4511
4512         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4513
4514         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4515
4516         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4517         the length of the native code as well.
4518
4519         * basic-simd.cs: Add a test for #521662.
4520
4521 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4522
4523         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4524
4525 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4526
4527         * mini.c: Register function for getting the IP from a signal
4528         context with metadata.
4529
4530 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4531
4532         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4533         call a generic class init trampoline if needed. Fixes #519336.
4534
4535         * generics.cs: Add a test.
4536         
4537 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4538
4539         * method-to-ir.c: When doing a call which might be remote from
4540         shared generic code to other shared code with open type arguments,
4541         get the remoting invoke wrapper from the RGCTX and do an indirect
4542         call to it.
4543
4544 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4545
4546         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4547         after the unbox trampoline in the full-aot case.
4548
4549 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4550         
4551         * mini.c: Move initialization of jit_mutex before debugger initialization
4552         
4553         to avoid crashes.
4554         
4555         
4556         * Info.plist: added Info.plist and link flag to enable the mono executable
4557         to access other processes. Requires codesigning of the executable to work.
4558         
4559         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4560         
4561         compile on OS X.
4562         
4563
4564 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4565
4566         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4567
4568 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4571         when the generic instance is an instantiation of a subclass of the
4572         methods class. Fixes #517166.
4573
4574 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4575
4576         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4577         code.
4578
4579         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4580         AOTed code.
4581
4582         * CMakeLists.txt: Add minimal support for installation.
4583
4584 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4585
4586         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4587         determine whenever a method is directly callable to a separate function.
4588
4589         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4590         needed ones as a result of the previous change.
4591
4592         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4593         type of register arrays.
4594
4595         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4596         type of register arrays.
4597
4598 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4599         
4600         Contributed under the terms of the MIT/X11 license by
4601         Jerry Maine <crashfourit@gail.com>.
4602
4603         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4604
4605 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4606
4607         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4608
4609 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4610
4611         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4612         dump of structure return value. Fix some formatting.
4613         * cpu-s390x.md: Fix lengths of instruction sequences.
4614         * mini-s390.c: Minor formatting changes.
4615
4616 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4617
4618         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4619         Use sigaction on freebsd as well.
4620
4621 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4622
4623         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4624         uses #ifdef on it.
4625         
4626         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4627
4628 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4629
4630         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4631
4632 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4633
4634         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4635
4636 2009-06-20  Martin Baulig  <martin@ximian.com>
4637
4638         * debug-mini.c
4639         (MonoDebuggerThreadFlags): New enum typedef.
4640         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4641         (mono_debugger_thread_created): Added `gpointer func' argument;
4642         initialize the new `thread_flags' field.
4643
4644 2009-06-18  Martin Baulig  <martin@ximian.com>
4645
4646         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4647         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4648
4649         * debug-debugger.c
4650         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4651         flag in `MONO_DEBUGGER__info.runtime_info'.
4652
4653         * driver.c
4654         (mono_main): Call mini_debugger_set_attach_ok() if generics
4655         sharing is disabled.
4656
4657 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4658
4659         * aot-compiler.c (add_wrappers): Fix a warning.
4660
4661         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4662         the ppc load/store macro changes.
4663
4664 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4665
4666         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4667
4668         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4669         not just the got symbol.
4670
4671         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4672         on ppc.
4673
4674         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4675         ppc.
4676         
4677         * aot-compiler.c: Remove some fixmes.
4678
4679         * driver.c (mono_main): Print a helpful message when cross-compiling.
4680
4681         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4682
4683         * method-to-ir.c (initialize_array_data): Do the optimization if the
4684         target byte order is little endian, instead of the host byte order.
4685
4686         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4687         wrappers into the mscorlib image, Emit a unique plt symbol for each
4688         image, emit symbols for plt entries.
4689
4690         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4691         a .size directive.
4692         
4693 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4694
4695         * aot-compiler.c (add_wrappers): Avoid calling 
4696         mono_marshal_get_type_info () since it can assert for some types.
4697
4698         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4699         ldtoken are used inside wrappers.
4700
4701         * helpers.c: Add support for prefixing tools with the arch name.
4702
4703         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4704         quantities when using ilp32.
4705
4706         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4707         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4708
4709         * image-writer.c: Use .long on ilp32.
4710
4711         * aot-compiler.c: Use 32 bit loads on ilp32.
4712         
4713 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4714
4715         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4716
4717         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4718
4719         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4720
4721         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4722         second got slot of every aot image.
4723         
4724         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4725         aot on platforms with function pointers.
4726
4727         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4728         support for aot/full aot on ppc/ppc64.
4729         
4730         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4731         arguments which are needed on ppc.
4732
4733         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4734         argument.
4735
4736         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4737         
4738         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4739
4740         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4741
4742         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4743
4744         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4745
4746 2009-06-17  Geoff Norton  <gnorton@novell.com>
4747
4748         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4749
4750 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4751
4752         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4753         to control whenever the dwarf writer is in xdebug or aot mode.
4754         (emit_class_dwarf_info): Use a separate abbrev for structures without
4755         children.
4756
4757         * aot-compiler.c: Pass the appending parameter to 
4758         mono_dwarf_writer_create ().
4759
4760         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4761         falls through to its next bblock. Fixes #513931.
4762
4763         * iltests.il: Add a test.
4764
4765         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4766         infor even if emit_line is FALSE, as the apple linker seems to require it.
4767
4768         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4769
4770         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4771         gcc does.
4772         (emit_fde): Ditto.
4773
4774 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4775
4776         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4777         mips build.
4778
4779 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4780
4781         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4782         'has_call_handler' fields.
4783
4784         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4785
4786         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4787         first bblock if not needed. Fixes #512790.
4788         
4789 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4790
4791         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4792         
4793         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4794         wrappers.
4795
4796         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4797         remoting-invoke-with-check wrappers, which are not needed when running with
4798         full-aot, since it doesn't support remoting.
4799         
4800 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4801
4802         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4803
4804         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4805         method info, it is not used anymore.
4806
4807         * mini.h: Bump AOT file format version.
4808         
4809         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4810         word smaller.
4811
4812         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4813         change above.
4814         
4815         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4816
4817         * mini.h: Bump AOT file format version.
4818         
4819 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4820
4821         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4822         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4823         iphone.
4824
4825         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4826         of CKFINITE and FBGE for VFP.
4827
4828 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4829
4830         * aot-compiler.c: Don't align code to 16 bytes on arm.
4831         
4832         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4833         before the methods they belong to.
4834
4835         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4836         the full-aot case if possible, since the trampoline will be called right 
4837         away.
4838
4839         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4840         trampolines to 1024 after the change above.
4841
4842         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4843         trampoline to save 8 bytes per trampoline.
4844
4845         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4846         change above.
4847
4848 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4849
4850         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4851
4852 2009-06-08  Martin Baulig  <martin@ximian.com>
4853
4854         * debug-mini.c
4855         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4856         (_mono_debugger_throw_exception): Don't make this static.
4857         (_mono_debugger_unhandled_exception): Likewise.
4858         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4859
4860         * debug-mini.c
4861         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4862         (_mono_debugger_throw_exception): Add function prototype.
4863         (_mono_debugger_unhandled_exception): Likewise.
4864
4865         * mini-exceptions.c
4866         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4867         arg; return the first exception handler if the exception is caught
4868         and we're running inside the debugger.
4869         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4870         improve exception handle inside runtime-invoke, check whether the
4871         exception is actually caught in the method being invoked and not
4872         by the runtime-invoke-wrapper.
4873
4874 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4875
4876         * image-writer.c: Improve support for the osx assembler.
4877
4878         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4879         support them.
4880
4881 2009-06-08  Martin Baulig  <martin@ximian.com>
4882
4883         * debug-mini.c
4884         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4885         (_mono_debugger_throw_exception): Don't make this static.
4886         (_mono_debugger_unhandled_exception): Likewise.
4887         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4888
4889         * debug-mini.c
4890         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4891         (_mono_debugger_throw_exception): Add function prototype.
4892         (_mono_debugger_unhandled_exception): Likewise.
4893
4894         * mini-exceptions.c
4895         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4896         arg; return the first exception handler if the exception is caught
4897         and we're running inside the debugger.
4898         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4899         improve exception handle inside runtime-invoke, check whether the
4900         exception is actually caught in the method being invoked and not
4901         by the runtime-invoke-wrapper.
4902
4903 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4904
4905         * image-writer.c (append_subsection): Don't align subsections of the
4906         debug_line section as a workaround.
4907
4908         * dwarfwriter.c: Emit line number info in the AOT case as well.
4909
4910 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4911
4912         This patch is contributed under the terms of the MIT/X11 license
4913
4914        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4915        code_len <= code_size
4916
4917 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4918
4919         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4920
4921 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4922
4923         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4924         invoke wrappers, we now use trampolines instead.
4925
4926 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4927
4928         * mini-darwin.c: The exception thread must not be registered with
4929         the GC.
4930
4931 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4932
4933         * mini-gc.c: Disable the code because it makes SGen crash.
4934
4935 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4936
4937         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4938         instead of asserting.
4939
4940 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4941
4942         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4943         output file after the code has been compiled.
4944
4945 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4946
4947         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4948
4949 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4950
4951         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4952         entries distinction to simplify the code.
4953
4954         * mini.h: Bump AOT file format version.
4955         
4956 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * objects.cs: Fix the signature of one of the tests.
4959
4960         * mini.c (mini_create_ftnptr): New helper function, moved here from
4961         object.c.
4962         (mini_get_addr_from_ftnptr): Ditto.
4963         (mini_init): Install the new helpers.
4964
4965 2009-05-28  Martin Baulig  <martin@ximian.com>
4966
4967         Correctly initialize the debugger when embedding Mono.
4968
4969         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4970         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4971         see documentation in mini_debug_running_inside_mdb().
4972
4973         * debug-debugger.c
4974         (mini_debug_running_inside_mdb): New function to check whether
4975         we're running inside mdb.
4976
4977         * mini.c (mini_init): Call mini_debugger_init() if we're running
4978         inside the debugger.
4979
4980         * driver.c (mono_main): Moved the call to mini_debugger_init()
4981         into mini_init() to make this work when embedding Mono.
4982
4983         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4984         calls to mini_debugger_init().
4985
4986         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4987         mono_debugger_main() -> mini_debugger_main() and put them inside a
4988         `MONO_DEBUGGER_SUPPORTED' conditional.
4989
4990 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4991
4992         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4993         this is no longer in use.
4994         * mini.h: Same.
4995
4996 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4997
4998         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4999
5000         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5001         methods.
5002
5003 2009-05-27  Martin Baulig  <martin@ximian.com>
5004
5005 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5006
5007         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5008         long_conv_to_r_un to 64 bits.
5009
5010         * cpu-x86.md: Increase the instruction size due to the changes.
5011
5012         * iltests.il.in: Add regression test.
5013
5014         Fixes #467201.
5015
5016 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5017
5018         * objects.cs: Move the previous test from basic.cs to here.
5019
5020 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5021
5022         * basic.cs: Add regression test for #506915.
5023
5024 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5025
5026         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5027         optimization we must check the bb of the first byte of stobj as
5028         it's the only one set in cil_offset_to_bb.
5029
5030         Fixes #506915.  
5031
5032 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5033
5034         * image-writer.c: Fix pointer directive on ppc64.
5035
5036 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * image-writer.c (asm_writer_emit_section_change): Avoid using
5039         .bss subsections on ppc too.
5040
5041 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5042
5043         * image-writer.c: Fix the definition of TARGET_ASM_....
5044         
5045         * image-writer.c: Fix the emission of assembler directives in the last
5046         change.
5047
5048         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5049         exception throwing code to accomodate ppc64.
5050
5051         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5052         size to work on ppc64 too.
5053
5054         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5055         too.
5056
5057         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5058         the assembler dialect instead of using platform specific defines.
5059
5060 2009-05-22  Geoff Norton  <gnorton@novell.com>
5061
5062         * mini-arm.c (get_call_info): If a structure is split between the stack
5063         and argument registers, we should not advance the stack pointer by the entire
5064         native size, but just by the amount that spilled.
5065
5066 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5067
5068         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5069         correctly.
5070
5071 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5072
5073         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5074         wrappers normally.
5075         
5076         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5077         methods so wrapper don't get added twice.
5078         (add_generic_instances): Don't add methods of arrays.
5079
5080         * generics.cs: Mark one test as !FULLAOT.
5081
5082 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5083
5084         * mini-x86.c (emit_move_return_value): Remove unused vars.
5085
5086 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5087
5088         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5089         decomposing 8 bytes structs into a LCALL.
5090
5091         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5092         pointer for where to store the returned regs.
5093
5094         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5095         state the concern.
5096
5097         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5098
5099 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5100
5101         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5102         without getenv.
5103
5104 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5105
5106         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5107
5108         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5109         generics.
5110
5111 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5112
5113         * local-propagation.c (mono_local_cprop): Avoid local propagation
5114         across paired add/sub if the first instruction dest reg is it's
5115         source reg. For example:
5116
5117         int_add_imm R12 <- R12 [1] clobbers: 1
5118         int_sub_imm R42 <- R12 [1] clobbers: 1
5119
5120         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5121         maintain the math identify.
5122
5123         Fixes #505375.
5124
5125 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5126
5127         * Makefile.am: avoid going on the network just to get the revision,
5128         use git log instead
5129
5130 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5131
5132         Fixed estimate for short branches on amd64 (they were off mark, and
5133         enabling call prolog-epilog instrumentations caused assertions).
5134         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5135         estimate for the maximum length of this basic block.
5136         * mini-amd64.c:
5137         - mono_arch_emit_prolog: compute max_length for each basic block
5138           (instead of max_offset), and inflate size estimate also for entry bb
5139           in case of code instrumentation.
5140         - mono_arch_output_basic_block: get rid of "cpos" (the current
5141           estimated "position" in the code), and always use "offset" instead,
5142           which is accurate; at the beginning of the function quickly recompute
5143           max_offset for all the remaining blocks, starting from the current
5144           cfg->code_len (which is correct, and not estimated) and using the
5145           estimated block lengths computed previously.
5146
5147 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5148
5149         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5150         functions, it is already done in the caller.
5151
5152         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5153
5154         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5155         MONO_ARCH_GSHARED_SUPPORTED define.
5156
5157         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5158
5159         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5160         function.
5161
5162 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5163
5164         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5165         call to mono_marshal_get_rgctx_invoke ().
5166
5167         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5168         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5169         gshared use the static rgctx trampolines now.
5170         
5171         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5172         platform supports it.
5173
5174 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5175
5176         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5177
5178         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5179
5180 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5181
5182         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5183
5184         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5185         for ppc.
5186
5187 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5188
5189         Made it possible for mono_arch_instrument_epilog to preserve
5190         argument registers, otherwise instrumenting the "epilogue" before
5191         a tail call would clobber them.
5192         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5193         if like mono_arch_instrument_epilog but with an additional parameter
5194         that states if argument registers must be preserved.
5195         * mini.c: implemented mono_arch_instrument_epilog as a call to
5196         mono_arch_instrument_epilog_full without asking to preserve argument
5197         registers (this makes the existing code work as usual).
5198         * mini-amd64.c:
5199         - mono_arch_instrument_epilog: add parameter to transform it into
5200         mono_arch_instrument_epilog_full, and preserve argument registers
5201         when required.
5202         - mono_arch_output_basic_block, OP_TAILCALL case: call
5203         mono_arch_instrument_epilog_full.
5204         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5205         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5206         only transformed mono_arch_instrument_epilog into
5207         mono_arch_instrument_epilog_full.
5208
5209 2009-05-15  Geoff Norton  <gnorton@novell.com>
5210
5211         * mini-darwin.c: This works on arm now.
5212
5213 2009-05-14  Geoff Norton  <gnorton@novell.com>
5214
5215         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5216         embedding api.
5217
5218 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5221         label names.
5222
5223         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5224         wrappers during full aot mode correctly.
5225
5226         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5227         methods correctly.
5228
5229         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5230         mono_metadata_type_hash ().
5231
5232 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5233
5234         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5235         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5236         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5237         Removed MONO_INST_BRLABEL from the instruction flags, and the
5238         remaining code that used it, because we do not support branches inside
5239         basic blocks (and branch target labels) anymore.
5240         * Makefile.am: As part of the above cleanup, remove reference to
5241         BURG files which don't exist anymore.
5242
5243 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5244
5245         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5246         osx.
5247
5248         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5249         to use mono_arch_throw_corlib_exception.
5250
5251         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5252         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5253
5254         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5255         domain mempool.
5256
5257         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5258
5259         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5260         for the got to make debugging easier and to avoid confusing it with the
5261         system got.
5262         
5263         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5264         method so a breakpoint can be set when using gdb.
5265
5266 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5267
5268         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5269         on mono_method_get_imt_slot ().
5270
5271         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5272         num_decodes variables.
5273
5274         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5275         change as it doesn't seem to work.
5276         
5277         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5278         wrappers.
5279
5280 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5281
5282         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5283         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5284
5285         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5286         builder when using full aot.
5287
5288         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5289         here, it is already handled.
5290         
5291         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5292         correctly for IMT.
5293
5294         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5295
5296         * mini-arm.h: Enable IMT for full aot.
5297         
5298         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5299         arch doesn't support it.
5300
5301         * mini.c (mini_init): Don't disable IMT for full aot if the
5302         architecture supports it.
5303
5304         * mini.h (MonoAotTrampoline): New enum containing the different types
5305         of 'numerous' trampolines.
5306         (MONO_AOT_FILE_VERSION): Bump this.
5307
5308         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5309         static rgctx trampolines. Add support for full-aot IMT thunks.
5310
5311         * mini-amd64.h: Enable IMT for full aot.
5312
5313         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5314         to exclude tests belonging to a category.
5315
5316         * generics.cs: Mark some tests with a !FULLAOT category.
5317
5318         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5319         generics tests.
5320
5321 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5322
5323         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5324         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5325         (emit_plt): Fix a warning.
5326
5327 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5328
5329         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5330         back into aot-compiler.c to a place where the other functions shared by
5331         the runtime and aot compiler are.
5332         
5333         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5334         as done previously, instead of in MonoAotFileInfo, since pointers might have
5335         alignment requirements.
5336
5337         * mini.h: Bump AOT file format version.
5338
5339 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5340
5341         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5342         that is used at runtime from the aot-compiler.c, this makes it
5343         work on setups that remove the AOT compiler from the output
5344         image. 
5345
5346 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5349         PPC.
5350
5351         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5352
5353         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5354
5355         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5356         stuff to mono_arch_decompose_long_opts ().
5357         (mono_decompose_opcode): Remove some dead code.
5358
5359 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5360
5361         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5362         cmethod can be null for quite a some reasons.
5363
5364 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5365
5366         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5367
5368 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5369
5370         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5371
5372 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5373
5374         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5375         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5376         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5377         calls returning structures by addr on amd64.
5378
5379         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5380
5381         * iltests.il.in: Restructure the tail call tests a bit.
5382         
5383 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5384
5385         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5386         for virtual methods too.
5387
5388 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5389
5390         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5391         due to regression in verifying System.dll.
5392
5393 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5396         in dynamic methods.
5397
5398         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5399         instances.
5400
5401         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5402         g_str_hash () which can change.
5403
5404         * driver.c (mini_regression): Disable optimizations not supported by
5405         the cpu. Fixes #500019.
5406
5407         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5408         build.
5409
5410 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5413         to the latest LLVM code.
5414
5415 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5416
5417         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5418
5419 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5420
5421         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5422         x86/amd64.
5423
5424         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5425         no longer saving offsets, so just save the patch types along with the other
5426         info.
5427         * aot-runtime.c (load_patch_info): Update after the changes to 
5428         encode_patch_list ().
5429         (decode_got_entry): Removed, merged into load_patch_info ().
5430         (is_shared_got_patch): Removed, call the same function from
5431         aot-compiler.c.
5432
5433         * mini.h: Bump aot file format version.
5434         
5435         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5436         half-finished no-dlsym code.
5437
5438         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5439         option.
5440
5441         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5442         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5443
5444 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5445
5446         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5447         buffer length to work with AOT code.
5448
5449         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5450         ldfld/stfld opcodes.
5451
5452         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5453         as it is not used.
5454
5455         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5456
5457         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5458
5459         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5460         LLVM API.
5461
5462         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5463         if needed. Don't decompose long operations when using llvm.
5464
5465 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5466
5467         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5468         PAGESIZE constant.
5469
5470         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5471
5472 2009-05-03  Martin Baulig  <martin@ximian.com>
5473
5474         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5475         mono_debugger_insert_method_breakpoint() since the class init
5476         handler we're inserting at the top of the method already gives us
5477         a notification.
5478
5479 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5480
5481         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5482         to mono_arch_decompose_long_opts () for x86 and arm.
5483
5484 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5485
5486         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5487         TARGET_AMD64 here.
5488
5489 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5490
5491         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5492         JIT code.
5493
5494 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5495
5496         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5497         number of trampolines used in full-aot mode.
5498
5499         * aot-compiler.c: Add an ntrampolines option to set the number of 
5500         trampolines emitted in full-aot mode.
5501
5502 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5505         a volatile load. Get rid of get_tempname (), llvm assigns names
5506         automatically.
5507
5508         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5509         builder function.
5510
5511         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5512         a value.
5513
5514         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5515         level 1.
5516
5517         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5518         to the same register as a fixed sreg2. Fixes #497271.
5519
5520         * iltests.il.in: Add a new test.
5521
5522 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5523
5524         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5525         stack, since pushes complicate exception handling.
5526
5527         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5528         the stack if they are passed using moves.
5529
5530         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5531
5532         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5533         when using llvm.
5534
5535         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5536         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5537         of FMOVE if it is an R4.
5538
5539 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5540
5541         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5542
5543         * mini.h (LLVMCallInfo): New structure to store calling convention 
5544         information for the LLVM back end similar to the CallInfo structures in 
5545         the back-ends.
5546
5547         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5548         call information in a format usable by LLVM.
5549         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5550
5551         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5552         mono_llvm_emit_call () when compiling using LLVM.
5553
5554         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5555         comments to all functions. Fix memory leaks. Add a public init/cleanup
5556         function.
5557
5558         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5559
5560         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5561         mono_array_new_va () jit icall.
5562         
5563 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5564
5565         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5566         multiple machine description files to be specified.
5567         * mini-ops.h: fixes for cross-compilation.
5568
5569 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5570
5571         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5572         some porting work.
5573
5574 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5575
5576         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5577         to prevent asserts in various passes. Fixes #497220.
5578
5579 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5580
5581         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5582         a racy assert.
5583
5584         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5585         table to avoid duplicates.
5586
5587         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5588         
5589         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5590         option is used.
5591
5592 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5593
5594         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5595         is for method or field access.
5596
5597 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5600         a Value to stdout.
5601
5602         * mini-llvm.c (mono_llvm_emit_method): Use it.
5603         
5604         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5605         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5606         on volatile values.
5607
5608         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5609         synchronized methods.
5610
5611         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5612
5613         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5614
5615         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5616         OP_LOADI8_MEM.
5617
5618         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5619         allowing some options to be set dynamically.
5620
5621 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5622
5623         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5624         unconditional branch.
5625
5626         * mini.h (MonoTrampolineType): Add new trampoline type 
5627         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5628         compiled code.
5629
5630         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5631         function.
5632
5633         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5634         creation function.
5635
5636         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5637         is enabled. Instead, use the llvm vcall trampoline.
5638         
5639         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5640
5641         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5642         
5643         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5644         functions.
5645
5646         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5647         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5648
5649         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5650         OP_IA64_CSET opcode.
5651
5652         * mini.c: Fix a warning.
5653
5654         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5655         THROW to the appropriate llvm type.
5656
5657 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5658
5659         * mini.c (mini_method_compile): Add statistics for methods JITted
5660         with/without LLVM.
5661
5662 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5663
5664         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5665         OP_IA64_CMP_<cond>_IMM opcodes.
5666
5667 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5668
5669         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5670         corlib exceptions.
5671
5672         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5673         correctly.
5674
5675         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5676         GENERICINST.
5677
5678 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5679
5680         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5681
5682 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5685         support.
5686
5687         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5688         rgctx invoke trampolines for x86.
5689
5690         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5691         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5692         (mono_arch_get_vcall_slot): Simplify this.
5693
5694 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5695
5696         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5697         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5698
5699 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5700
5701         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5702         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5703
5704         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5705
5706         * liveness.c (visit_bb): Remove a needless assert.
5707
5708 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5709
5710         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5711         full aot support to the arch specific code.
5712
5713         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5714
5715         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5716
5717         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5718         
5719         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5720         collect information about the delegate invoke impl trampolines.
5721
5722         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5723         to save trampolines during full-aot mode.
5724
5725         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5726         creation function which returns a trampoline which sets the rgctx
5727         argument.
5728         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5729         wrapper if possible.
5730         (mono_delegate_trampoline): Ditto.
5731
5732         * mini.c (mono_jit_runtime_invoke): Ditto.
5733
5734         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5735         
5736         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5737
5738         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5739         
5740 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5743         just setting the opcode to OP_NOP.
5744
5745 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * mini.c (mini_method_compile): Put the last change inside an 
5748         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5749         
5750         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5751         and extend live ranges to cover the whole method when using xdb.
5752
5753         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5754         do it in the trampolines.
5755
5756         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5757         needed.
5758
5759         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5760         
5761         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5762         call code in full-aot mode since IMT is disabled there.
5763         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5764         new JIT no longer has that restriction.
5765
5766         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5767
5768         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5769         a more compact format.
5770         (mono_aot_wrapper_name): New function to return a unique name for a
5771         wrapper method, also used by the AOT runtime.
5772
5773         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5774         aot-compiler.c.
5775
5776         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5777         when a ICollection<T> etc is encountered.
5778         (add_generic_instances): Process method arguments/locals too.
5779         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5780         trampoline names.
5781
5782         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5783         
5784 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5785
5786         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5787
5788         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5789
5790         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5791         representing the result of the decomposition. Nullify instructions
5792         instead of setting them to OP_NOP since nops can't have registers
5793         set.
5794
5795 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5796
5797         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5798         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5799         info. Strip 'mapping symbols' on ARM.
5800
5801         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5802         
5803         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5804         this with the native genmdesc.
5805
5806 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5807
5808         * aot-runtime.c:  Fixing the MSVC build.
5809
5810         Code is contributed under MIT/X11 license.
5811
5812 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5815         JITted code depends on it.
5816
5817 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5818
5819         * aot-compiler.c: Use new MonoGenericParam accessors.
5820
5821 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5822
5823         Reduce memory usage and improve correctness wrt MonoGenericParam
5824         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5825         handing.  Avoid allocating MonoGenericParams, but use the ones in
5826         the container itself.
5827
5828 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5829
5830         * tasklets.c: Return exceptions in the out argument.
5831
5832 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5835         opcode. Use pointer types in more places instead of casting them to 
5836         integers.
5837
5838         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5839         optimizations.
5840         (mono_llvm_optimize_method): New helper function to optimize a method.
5841
5842         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5843         widening code so it could be called from more places.
5844         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5845         code paths in the call opcodes.
5846
5847 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5848
5849         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5850
5851 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5852
5853         * dwarfwriter.c: Use _ to separate class name 
5854         components as gdb can't handle '.'. Represent reference variables
5855         as 'class <NAME>&'.
5856         
5857         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5858
5859         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5860         
5861         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5862
5863         * gc-test.cs: New file with GC stack marking tests.
5864         
5865         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5866         negative numbers for vfp.
5867
5868         * basic-float.cs: Add a test.
5869         
5870 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5871
5872         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5873
5874 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5875
5876         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5877         part of tasklet/continuation support.
5878
5879 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5880
5881         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5882         amd64 opcodes inside an ifdef.
5883
5884         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5885         of complex types.
5886         
5887         * dwarfwriter.c (emit_type): Emit the class info for classes.
5888
5889 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5890
5891         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5892
5893         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5894
5895         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5896
5897         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5898
5899 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5900
5901         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5902
5903         * mini-llvm.c: Update comments.
5904
5905         * mini.h (COMPILE_LLVM): New macro.
5906
5907         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5908
5909         * ssa.c (mono_ssa_compute): Ditto.
5910         
5911         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5912         the unwind ops from a DWARF FDE.
5913
5914         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5915         methods by extracting the dwarf unwind ops from the unwind info generated
5916         by LLVM.
5917         
5918         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5919         calls.
5920
5921         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5922         addressing modes.
5923
5924 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5925
5926         * Makefile.am (llvm_sources): Enable this.
5927
5928         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5929         failing back to the JIT if something cannot be handled.
5930
5931         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5932         compiling with LLVM.
5933
5934         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5935         compiling with LLVM.
5936
5937         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5938         compiling with LLVM.
5939
5940         * mini-ops.h: Add a few opcodes needed by LLVM.
5941
5942         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5943         has no unwind info.
5944
5945         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5946         backend.
5947
5948         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5949
5950         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5951
5952 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5953
5954         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5955         ridiculously large methods.
5956
5957 2009-03-31  Martin Baulig  <martin@ximian.com>
5958
5959         * debug-debugger.c (debugger_remove_breakpoint): Call
5960         mono_debugger_remove_class_init_callback ().
5961
5962 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5965         right before emitting code, not at the start.
5966
5967         * mini.c (mono_postprocess_patches): Extract this into a separate function
5968         from mono_codegen ().
5969
5970         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5971         byref types correctly.
5972
5973 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5974
5975         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5976         by the last change.
5977
5978 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5979
5980         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5981         indirect calls, this avoids problems where get_vcall_slot () would get
5982         confused by the native code for the instruction preceeding the call.
5983         (mono_arch_get_vcall_slot): Simplify this.
5984         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5985
5986         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5987         register allocator now seems to depend on them instead of the data in
5988         cpu-<ARCH>.md.
5989
5990         * mini.c (mini_method_compile): Throw the correct type of exception if
5991         mono_method_get_header () fails because of a loading error.
5992
5993 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5994
5995         * mini.c (mini_method_compile): Clear the loader error if the method
5996         header cannot be decoded.
5997
5998         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5999         interface methods on proxies correctly.
6000
6001         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6002         this argument for vtype methods. Add precise liveness info for arguments.
6003
6004         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6005         LIVERANGE_START/END opcodes.
6006
6007         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6008         for arguments and values in registers.
6009
6010 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6011
6012         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6013         return a valuetype. Fixes #487518.
6014
6015         * iltests.il: Add a test.
6016         
6017         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6018
6019         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6020         closed over a null reference correctly.
6021
6022 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6023
6024         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6025
6026 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6027
6028         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6029         allocated to the same registers as fixed sregs.
6030
6031 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6032
6033         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6034         ATOMIC_CAS_IMM ops.
6035
6036         * method-to-ir.c: Handle more cases for
6037         Interlocked.CompareExchange.
6038
6039         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6040         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6041         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6042
6043 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6044
6045         * aot-runtime.c (decode_method_ref): Fix a warning.
6046
6047         * unwind.c (mono_unwind_frame): Ditto.  
6048
6049 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6050
6051         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6052         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6053
6054         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6055         fix the handling of large values in the ALU_PC_G0_NC relocation.
6056
6057 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6058
6059         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6060
6061 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6062
6063         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6064         ops.
6065
6066 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6067
6068         * method-to-ir.c: MINI_OP3 needs a comma.
6069
6070         * method-to-ir.c, mini.h, mini.c: Remove
6071         mono_init_op_sreg_counts ().
6072
6073 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6074
6075         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6076         OP_JMP.
6077         
6078         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6079         assertion.
6080
6081         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6082
6083         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6084         code somewhat.
6085
6086 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6087
6088         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6089         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6090         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6091         operations.
6092
6093 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6094
6095         * driver.c: Change location of gc_wrapper.h.
6096
6097         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6098         inside finally clauses correctly. Fixes #485721.
6099
6100         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6101         after the change above.
6102
6103         * exceptions.cs: Add a test.
6104         
6105 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6108
6109         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6110         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6111         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6112
6113         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6114         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6115
6116 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6117
6118         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6119         Simplify logic for ensure_method_is_allowed_to_call_method. 
6120         Handle wrappers on callers.
6121
6122 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6123
6124         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6125         them don't run yet.
6126
6127         * basic-simd.cs: Fix the names of some test methods.
6128
6129 2009-03-18  Geoff Norton  <gnorton@novell.com>
6130
6131         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6132
6133 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6136
6137 2009-03-17  Jb Evain  <jbevain@novell.com>
6138
6139         * driver.c: remove now uneeded call to mono_gc_base_init before
6140         mono_profiler_load.
6141
6142 2009-03-17  Jb Evain  <jbevain@novell.com>
6143
6144         * dwarfwriter.c (token_handler): handle more cases.
6145
6146 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6147
6148         * method-to-ir.c: Remove more dead code (that was required only
6149         because of method_is_safe). Fix compiler warnings.
6150
6151 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6152
6153         * method-to-ir.c: Remove unneeded/useless method_is_safe
6154         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6155
6156 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6157
6158         * mini.c (mini_method_compile): Print the method been compiled with
6159         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6160         for people not familiar with the runtime.
6161
6162 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6163
6164         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6165         a managed object which is later put into a GList. Return its class instead.
6166
6167         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6168         stack slots when using sgen.
6169
6170 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6173
6174 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6175
6176         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6177         > so it works on the first vreg as well.
6178
6179 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6180
6181         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6182         trigger randomly.
6183
6184         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6185         
6186         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6187         implement GArray.
6188
6189 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6190
6191         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6192         native->IL offset mapping.
6193
6194 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6195
6196         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6197
6198         * basic.cs: Add a test.
6199
6200 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6201
6202         * mini-x86.c (mono_arch_output_basic_block): Use different
6203         registers in case the ones we want to overwrite are used by the
6204         other operand.  Fixes regression in #480807.
6205
6206 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6209
6210         * dwarfwriter.c (emit_line_number_info): The line number info for
6211         IL code was off by one. Fix that.
6212
6213         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6214         stack.
6215
6216 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6217
6218         Contributed under the terms of the MIT/X11 license by Steven
6219         Munroe <munroesj@us.ibm.com>.
6220
6221         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6222         Fixes #483462.
6223
6224 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6225
6226         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6227         as well.
6228
6229 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6230
6231         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6232         the delegate ctor handling code. Fixes #482638.
6233         
6234         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6235         #481458.
6236
6237         * iltests.il.in: Add a test.
6238         
6239         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6240         mini-posix.c.
6241
6242 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6243
6244         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6245         is shared generic code, return the trampoline, even if the method
6246         has already been compiled.  Fixes #479763.
6247
6248         * mini.c, mini.h: New function
6249         mono_jit_find_compiled_method_with_jit_info() which is the same as
6250         mono_jit_find_compiled_method() but also returns the jit info.
6251
6252 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6253
6254         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6255         for methods which actually have one.  For all other methods, make
6256         sure the this argument var is live the whole method.
6257
6258         * mini.c (mini_method_compile): Every shared method has a
6259         this/vtable/mrgctx info.  Fixes #480807.
6260
6261 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6262
6263         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6264         generic/imt thunks where some entries branch through the vtable,
6265         while other entries branch directly.
6266
6267 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6268
6269         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6270
6271         * mini-windows.c: Ditto.
6272         
6273         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6274         ctors.
6275
6276 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6277
6278         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6279         down an assert.
6280
6281 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6282
6283         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6284         #481403.
6285
6286 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6287
6288         * exceptions-x86.c: Include debug-mini.h - fixes build.
6289
6290 2009-03-04  Martin Baulig  <martin@ximian.com>
6291
6292         * debug-mini.c: Clean up the exception API and add documentation.
6293         (mono_debugger_handle_exception): New public method; this is
6294         called when throwing an exception or encountering an unhandled one.
6295         (mono_debugger_call_exception_handler): Formerly known as
6296         mono_debugger_handle_exception(); this is used to tell the
6297         debugger that we're about to invoke an exception handler.
6298
6299 2009-03-04  Martin Baulig  <martin@ximian.com>
6300
6301         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6302         ../metadata/mono-debug-debugger.c; save and reset exception state.
6303
6304 2009-03-02  Martin Baulig  <martin@ximian.com>
6305
6306         * debug-mini.c: Moved the debugger exception handling here from
6307         ../metadata/mono-debug-debugger.c.
6308
6309         * debug-mini.h
6310         (MonoDebuggerExceptionAction): New exception typedef.
6311
6312         * debug-mini.c
6313         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6314
6315         * exceptions-amd64.c
6316         (mono_amd64_throw_exception): Use the new debugger exception
6317         handling code.
6318
6319         * mini-exceptions.c
6320         (mono_handle_exception_internal): Don't call
6321         mono_debugger_unhandled_exception() here.
6322
6323 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6324
6325         * mini.c aot-compiler.c: Update after the changes to 
6326         mono_marshal_get_runtime_invoke ().
6327
6328         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6329         Virtual generic methods might not have method->slot set, work around
6330         that.
6331
6332         * generics.cs: Add a test.
6333
6334 2009-03-02  Geoff Norton  <gnorton@novell.com>
6335
6336         * mini.c:
6337         * driver.c: Allow signal chaining of SIGFPE as well.
6338
6339 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6340
6341         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6342         this since it now receives the method not its generic context in the
6343         IMT reg.
6344
6345         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6346         generic/imt thunks where some entries branch through the vtable, while
6347         other entries branch directly.
6348
6349         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6350
6351         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6352         support for interface methods as well.
6353
6354         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6355         using the normal IMT thunks.
6356
6357         generics.cs: Add new tests.
6358         
6359         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6360         the generic inst to the generic imt thunks. This fixes AOT support, 
6361         improves consistency with the normal IMT thunks, and makes it easier to
6362         add support for interface generic virtual methods later.
6363
6364         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6365         
6366 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6367
6368         * driver.c (mono_set_signal_chaining): New public API function to enable
6369         signal chaining on POSIX platforms.
6370
6371         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6372         (si@lindenlab.com) to implement signal chaining. The original patch was
6373         contributed under the MIT X/11 license:
6374         https://bugzilla.novell.com/show_bug.cgi?id=318894
6375
6376 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6377
6378         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6379         too until it can be made to run on amd64.
6380
6381 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6382
6383         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6384         to  get_generic_context_from_code () + get_call_info () if possible.
6385
6386 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6387
6388         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6389         suspend-on-sigsegv functionality.
6390
6391         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6392         to suspend when a native SIGSEGV is received. This is useful for debugging
6393         crashes which don't happen under gdb, since a live process contains more
6394         information than a core file.
6395
6396         * mini-exceptions.c (mono_print_thread_dump): Use 
6397         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6398
6399         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6400
6401         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6402         
6403         * basic-float.cs: Disable the tests which currently fail on amd64.
6404
6405         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6406         value to mono_arch_patch_callsite () to fix crashes.
6407         
6408         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6409
6410 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6411
6412         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6413         nop code by patching the call address to point to the nullified class init
6414         trampoline, as the former does not seem to be safe on SMP machines.
6415
6416 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6417
6418         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6419         they were wrong.
6420
6421 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6422
6423         * basic-float.cs basic-calls.cs: Fix warnings.
6424
6425 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6426
6427         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6428         correct frame pointer in the LMF.  Should fix #478394.
6429
6430 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6431
6432         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6433
6434         * image-writer.c: Make the binary writer less verbose.
6435
6436 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6437
6438         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6439         are called from runtime invoke wrappers.
6440
6441 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6442
6443         * cpu-ppc.md (store_memindex): Increase the size of this.
6444
6445 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6448
6449         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6450
6451         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6452         OP_LCONV_TO_R_UN.
6453
6454         Last fix for of #467201.
6455
6456
6457 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6458
6459         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6460
6461         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6462         and long_conv_to_r8_2:
6463
6464         Fixed part of #467201.
6465
6466 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6467
6468         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6469
6470         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6471         conversion to 32 bits.
6472
6473         * cpu-x86.md: Increase the size of int_conv_to_r4.
6474
6475         * basic-float.cs: Add a test for this.
6476
6477         Fixed part of #467201.
6478
6479 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6480
6481         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6482
6483         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6484         conversion to 64 bits.
6485
6486         * basic-float.cs: Add a test for this.
6487
6488         Fixed part of #467201.
6489
6490 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6491
6492         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6493
6494         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6495         This behavior is compatible with MS.
6496
6497         * iltest.il.in: Add a test for this.
6498
6499         Fixed part of #467201.
6500
6501 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6502
6503         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6504
6505         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6506         change the precision of the value.
6507
6508         * cpu-x86.md: Define len for float_conv_to_r4.
6509
6510         * basic-float.cs: Add a test for this.
6511
6512         Fixed part of #467201.
6513
6514 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6515
6516         * mini.c: Adjust locking order to the new semantics where the loader lock
6517         comes first.
6518
6519 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6520
6521         * aot-runtime.c:
6522         * mini-amd64.c:
6523         * mini-arm.c:
6524         * mini-ia64.c:
6525         * mini-mips.c:
6526         * mini-ppc.c:
6527         * mini-sparc.c:
6528         * mini-trampolines.c:
6529         * mini-x86.c:
6530         * mini.c:
6531         * tramp-alpha.c:
6532         * tramp-amd64.c:
6533         * tramp-arm.c:
6534         * tramp-hppa.c:
6535         * tramp-ia64.c:
6536         * tramp-mips.c:
6537         * tramp-ppc.c:
6538         * tramp-s390.c:
6539         * tramp-s390x.c:
6540         * tramp-sparc.c:
6541         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6542
6543 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6544
6545         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6546         as it is incorrect.
6547
6548 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6549
6550         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6551         for cctors if needed.
6552
6553 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6554
6555         * mini-ppc.c: Fix build on Darwin.
6556
6557 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6558
6559         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6560         version instead of 3 as valgrind doesn't like version 3.
6561
6562         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6563
6564         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6565         usable for hashing methods.
6566         (emit_extra_methods): Use the new hash to avoid putting every method in the
6567         same hash bucket.
6568
6569         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6570
6571         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6572         whenever a method ref could match a method.
6573         
6574         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6575         test to fail.
6576         
6577         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6578         methods refs.
6579
6580         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6581
6582         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6583         the encoding buffer.
6584
6585         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6586         mono_method_get_header () on inflated methods as an optimization.
6587
6588 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6589
6590         * ssa.c (fold_ins): Fix another crash if the instruction following the
6591         switch was optimized away.
6592
6593 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6594
6595         Contributed under the terms of the MIT/X11 license by Steven
6596         Munroe <munroesj@us.ibm.com>.
6597
6598         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6599
6600 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6603         around the mono_domain_alloc calls, it is now done by the functions
6604         themselves.
6605
6606         * aot-compiler.c (compile_method): Only add wrappers referenced by
6607         the method if compiling with full AOT.
6608         (mono_compile_assembly): Error out if --aot=full is specified on
6609         a platform where it is not supported.
6610
6611         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6612         on ARM too.
6613
6614         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6615         AOT support.
6616
6617         * aot-runtime.c (load_named_code): Handle 
6618         mono_arm_throw_exception_by_token.
6619
6620         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6621
6622         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6623         unaligned.
6624
6625         * Makefile.am (fullaotcheck): Exit if a test fails.
6626
6627         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6628         on ARM.
6629         (mono_compile_assembly): Handle the assembler failing.
6630
6631         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6632         accepting subsections of .bss.
6633
6634         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6635         was optimized away.
6636
6637         * aot-compiler.c: Remove some unused includes.
6638         
6639         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6640         now in MonoImageWriter.
6641
6642         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6643         code sequence which matches a non-virtual call. Fixes #472654.
6644
6645 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6646
6647         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6648         xdebug code.
6649         
6650         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6651         use the image/dwarf writers directly.
6652
6653         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6654         field.
6655
6656         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6657         MonoDwarfWriter.
6658
6659         * image-writer.h: Fix some typos.
6660
6661         * dwarfwriter.h dwarfwriter.c: New files.
6662         
6663         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6664         separate module.
6665
6666         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6667         argument to return unwind info.
6668
6669         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6670
6671         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6672         
6673         * aot-runtime.c (decode_method_ref): Add a case for 
6674         MONO_AOT_METHODREF_WRAPPER_NAME.
6675
6676         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6677         for AOT.
6678
6679         * aot-compiler.c (encode_method_ref): Use the new constants.
6680
6681         * aot-runtime.c (decode_method_ref): Ditto.
6682
6683         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6684         be compiled, not the icall itself.
6685
6686 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6687
6688         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6689         using decode_method_ref ().
6690
6691         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6692         convert it to an in32. Fixes #475859.
6693
6694         * arrays.cs: Add a test.
6695
6696 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6697
6698         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6699         OP_LCONV_TO_U2.
6700
6701         * basic-long.cs: Add a test.
6702
6703 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6704
6705         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6706         remove the frame pointer in leaf methods which don't receive any
6707         arguments, don't throw exceptions and don't do dynamic stack
6708         allocations.
6709
6710 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6711
6712         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6713         the fail_tramp changes. Hopefully fixes #475132.
6714
6715 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6716
6717         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6718         instead of mono_metadata_signature_dup_full.
6719
6720 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6721
6722         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6723         for processing jump tables. Fixes #473787.
6724
6725 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6726
6727         * mini-generic-sharing.c: mini_method_get_context() just calls
6728         mono_method_get_context_general() now.
6729
6730         * mini.c, mini.h: Moved get_object_generic_inst(),
6731         construct_object_context_for_method() and
6732         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6733
6734 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6735
6736         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6737         basic block fell through to its successor bblock without a branch. Fixes
6738         #474718.
6739
6740         * iltests.il.in: Add a test.
6741         
6742         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6743         (can_encode_patch): We can now handle arrays of generic parameters and
6744         array methods.
6745
6746         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6747
6748         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6749         the AOT file to avoid some #ifdefs in aot-runtime.c
6750
6751         * mini.h: Bump AOT file format version.
6752
6753 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6754
6755         * Makefile.am (fullaotcheck): Make this run the tests.
6756
6757         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6758
6759 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6760
6761         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6762         individually.  Fixes #473482.
6763
6764 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6765
6766         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6767
6768 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6769
6770         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6771         (mono_compile_assembly): Hush compile warnings about
6772         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6773         code path.
6774
6775 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6776
6777         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6778
6779         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6780
6781         * aot-compiler.c: Fix arm support.
6782
6783         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6784         img_writer_emit_unset_mode () function.
6785
6786         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6787         (mono_unwind_get_dwarf_pc_reg): Ditto.
6788
6789         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6790         Move almost all platform specific code to a set of arch_ functions, 
6791         and document them to ease porting.
6792         
6793         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6794
6795         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6796
6797         * aot-compiler.c: Extract the image writing functionality into a separate
6798         module to reduce the size of this file.
6799
6800 2009-02-09  Geoff Norton  <gnorton@novell.com>
6801
6802         * mini-s390.c: Fix the signature of emit_sig_cookie.
6803
6804 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6805
6806         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6807
6808         * aot-runtime.c (is_shared_got_patch): Ditto.
6809
6810         * aot-runtime.c (load_named_code): Cope with the fact that 
6811         decode_got_entry () won't decode the patch fully if its corresponding got
6812         entry is already filled.
6813         
6814         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6815         Initialize *ji.
6816         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6817
6818         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6819         as the moving pointer instead of 'buf' for consistency with the rest of the
6820         codebase.
6821         (mono_arch_create_monitor_exit_trampoline): Ditto.
6822
6823         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6824         generic_class_init trampolines.
6825         (add_generic_class): Extract some code from add_generic_instances () into a
6826         separate function so it can be called from other places too.
6827         (compile_method): Call add_generic_class () for the classes of inflated methods
6828         referenced by the method.
6829         (can_encode_patch): Allow references to generic parameters.
6830
6831         * aot-runtime.c: Add support the patches required by the new trampolines.
6832         
6833         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6834         support.
6835
6836         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6837         full-aot support.
6838
6839         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6840         this from get_throw_pending_exception, make the signature full aot compatible.
6841
6842         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6843
6844         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6845
6846         * exceptions.cs: Add a test.
6847
6848 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6849
6850         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6851         use the DWARF_DATA_ALIGN constant instead.
6852
6853         * exception-<ARCH>.c: Update after the above change.
6854
6855         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6856         dwarf unwinder.
6857
6858         * mini-arm.c: Enable the dwarf unwinder.
6859
6860         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6861         instead of mono_class_setup_vtable ().
6862
6863 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6864
6865         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6866         dwarf unwinder.
6867
6868         * mini-x86.h: Enable the dwarf unwinder.
6869
6870 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6871
6872         Fix mcs/tests/test-7.cs
6873         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6874         2009-02-03.
6875
6876 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6877
6878         * mini.c (print_jit_stats): Remove some unused statistics.
6879
6880 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6881
6882         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6883
6884 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6885
6886         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6887         the method we get from mono_object_get_virtual_method() because
6888         that function does it properly, now.
6889
6890 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6891
6892         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6893         opcodes. Fixes #472775.
6894
6895 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6896
6897         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6898         fact that mono_find_jit_info() sometimes returns the context
6899         corresponding to the jit info in new_ctx.  Fixes #472600.
6900
6901 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6904         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6905         klass->enum_basetype directly.
6906
6907         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6908         enum subtypes.
6909
6910         * unwind.c: Avoid 0 sized arrays.
6911
6912 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6913
6914         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6915         size on systems with 64k pages. Fixes #471389.
6916
6917 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6918
6919         Contributed under the terms of the MIT/X11 license by Steven
6920         Munroe <munroesj@us.ibm.com>.
6921
6922         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6923         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6924         necessary.
6925
6926 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6927
6928         Contributed under the terms of the MIT/X11 license by Steven
6929         Munroe <munroesj@us.ibm.com>.
6930
6931         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6932         comparison fix.
6933
6934         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6935         The trampoline can be longer on PPC64.
6936
6937 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6938
6939         Contributed under the terms of the MIT/X11 license by Steven
6940         Munroe <munroesj@us.ibm.com>.
6941
6942         * mini-ppc.c: Compiler warning fixes and trivial code
6943         simplifications.
6944
6945 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6946
6947         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6948         ins->dreg which could be a hardware register, not a vreg.
6949
6950         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6951         
6952         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6953         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6954
6955         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6956         
6957         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6958         ->dreg, that is not the vreg we are looking for.
6959
6960         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6961
6962         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6963         LIVERANGE_END.
6964
6965         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6966         strange crashes.
6967
6968 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6969
6970         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6971
6972         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6973         the line diff is 0.
6974
6975         * aot-compiler.c: Add xdebug support on x86.
6976
6977         * unwind.c: Add x86 support.
6978         
6979         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6980         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6981
6982         * mini.c (mini_method_compile): Ditto.
6983         
6984         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6985         the variable index.
6986
6987         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6988         which mimic .push_section/.pop_section in GAS.
6989         
6990         * aot-compiler.c: Emit precise live range information for variables.
6991
6992         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6993
6994         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6995         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6996         them.
6997
6998         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6999         the live ranges of variables.
7000
7001         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7002         of the variable in terms of native offsets.
7003
7004 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7005
7006         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7007         
7008 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7009
7010         Contributed under the terms of the MIT/X11 license by Steven
7011         Munroe <munroesj@us.ibm.com>.
7012
7013         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7014         order (offset then base reg) for ppc_load_multiple_regs.
7015         (emit_save_saved_regs) Correct operand order for
7016         ppc_store_multiple_regs.
7017         (mono_arch_get_call_filter): Correct operand order for
7018         ppc_load_multiple_regs.
7019
7020         * mini-ppc.c (emit_memcpy): Fix operand order for
7021         ppc_load_reg_update and ppc_store_reg_update.
7022         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7023         (mono_arch_emit_epilog): Correct operand order for
7024         ppc_load_multiple_regs.
7025
7026         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7027         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7028
7029 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7030
7031         * cpu-ppc64.md: Fixed storer4_memindex length.
7032
7033 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7036         line number info.
7037         
7038         * aot-compiler.c (emit_line_number_info): Optimize this.
7039
7040 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7041
7042         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7043         
7044         * aot-compiler.c: Add debug info for methods without debug info by
7045         emitting an IL file and having the line number info referencing that file.
7046
7047         * aot-compiler.c: Optimize the size of the generated line number info.
7048
7049         * aot-compiler.c: Emit line number info in xdebug mode.
7050
7051         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7052         million arguments.
7053
7054 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7055
7056         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7057
7058         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7059         is used.
7060
7061 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7062
7063         * basic-calls.cs: Test for the weird crash found on arm.
7064         
7065 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7066
7067         * cpu-arm.md: Increase the size of storer8_membase_reg and
7068         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7069
7070         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7071         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7072         reg to LR otherwise we'll be loading/storing from just the offset.
7073
7074 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7075
7076         Question: if we are storing gint32's inside the "*native_offset",
7077         should we change the signature to "gint32 *native_offset" to
7078         ensure that we do not have type definition problems?
7079         
7080         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7081         an int * as this is what the other function expects, causes
7082         problems with Freescale's compiler that defined int32_t to be a
7083         long and makes int incompatible 
7084
7085 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7086
7087         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7088         filename conflict with bjam.
7089
7090 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7091
7092         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7093         as it might use decomposed ops.
7094
7095 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7096
7097         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7098
7099         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7100         is defined.
7101
7102         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7103
7104         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7105         offsets.
7106
7107         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7108         way registers are stored in MonoContext on arm.
7109
7110         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7111         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7112
7113         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7114
7115         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7116
7117         * mini.c (mini_init): Register mono_isfinite.
7118
7119         * jit-icalls.c (mono_isfinite): New jit icall.
7120
7121         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7122         
7123         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7124         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7125         the parent frame.
7126
7127 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7128
7129         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7130         separate frame and stack pointers, so we must use FP to find the register
7131         spill area.
7132         The FP reg is retrieved from the MonoContext::regs array.
7133
7134 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7135
7136         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7137         as FPA requires it.
7138
7139 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7140
7141         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7142         return R4 and R8 when not running under softfloat.
7143
7144         Fixes basic-calls.exe
7145
7146 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7147
7148         * mini-arm.c: Implement some overflow opcodes.
7149
7150 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7151
7152         * ssa.c: handle another alloca.h
7153
7154         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7155         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7156         MONO_ARCH_USE_SIGACTION. 
7157
7158         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7159         capability defines.
7160
7161         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7162
7163         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7164         PPC targets as sigaction does not exist on all platforms, define
7165         this on a per-platform basis.
7166
7167         Instead of erroring out if the platform is not defined, include
7168         mini-ppc-os.h, and expect that the OS specific setting provides
7169         the required information.   
7170
7171 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * aot-compiler.c: Fix --enable-minimal=aot.
7174
7175 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7176
7177         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7178         previous change.
7179
7180 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7181
7182         * exceptions-arm.c: Fix warnings.
7183
7184         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7185         ARM.
7186
7187         * mini-x86.c: Fix --enable-minimal=jit build.
7188
7189         * mini.c: Really fix --enable-minimal=jit build.
7190         
7191         * mini.c (construct_object_context_for_method): Move this outside
7192         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7193
7194         "Backported" of r124984 from 2.0 branch.
7195         
7196         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7197
7198         "Backport" of r124977 + r124978 from 2.0 branch.
7199         
7200         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7201         to avoid calling mono_exception_from_token () from the throw trampoline.
7202         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7203         for throwing corlib exceptions, this fixes full-aot support for corlib
7204         exceptions.
7205
7206         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7207
7208 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7209
7210         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7211         part of the changes to split the code in mini into operating
7212         system specific files.
7213
7214         This patch was done by copying mini.c to the respective files to
7215         preserve SVN history.
7216
7217 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7218
7219         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7220
7221 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7222
7223         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7224         remoting-invoke-with-check wrappers of shared methods.
7225
7226         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7227
7228 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7229
7230         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7231         optimization if the top of stack is the last instruction in the
7232         bblock.  Otherwise it might have been used after its definition.
7233         Fixes #469742.
7234
7235 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7236
7237         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7238         method as well when get_vcall_slot () fails to match a code sequence.
7239
7240         * mini-arm.c: Fix the android build, which doesn't have
7241         __aeabi_read_tp.
7242
7243 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7244
7245         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7246         the s390x build.
7247
7248 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7249
7250         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7251
7252 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7253
7254         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7255         and put its id into jinfo->used_regs. This is only used on amd64,
7256         which is currently the only platform generating unwind info.
7257
7258         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7259         the dwarf unwinder. This is required to correctly handle async exceptions
7260         like thread abort and stack overflows, which can happen while a method
7261         is in the middle of its prolog or epilog.
7262         
7263         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7264         the unwind info belonging to an AOTed method.
7265
7266         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7267         into cfg->unwind_ops.
7268         
7269         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7270
7271         * mini.c (mini_init): Call mono_unwind_init ().
7272         (mini_cleanup): Call mono_unwind_cleanup ().
7273
7274         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7275         unwind info to be shared between methods.
7276
7277         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7278         saved in the LMF.
7279
7280         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7281         get_throw_pending_exception () to avoid initialization races.
7282
7283         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7284         mono_arch_exceptions_init () function.
7285
7286         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7287
7288 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7289
7290         * mini.c (mono_get_domain_intrinsic): New helper function.
7291         (mono_get_thread_intrinsic): Ditto.
7292
7293         * mini-arm.c mini-ia64.c: Use the new helper functions.
7294         
7295         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7296         the last constrained_call change, since it is needed in the non-AOT
7297         case as well.
7298
7299         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7300         
7301         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7302         mono_get_lmf_addr () on arm eabi linux.
7303
7304 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7305
7306         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7307         code sequence which matches a non-virtual call.
7308
7309 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7310
7311         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7312         stack pointer (r1).
7313
7314 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7315
7316         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7317         runtime-invoke wrappers, since they are also shared based on signature.
7318
7319 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7320
7321         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7322         info from the (correct) context.
7323
7324 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7325
7326         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7327         
7328         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7329         using dwarf unwinding info. Not yet used.
7330
7331         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7332
7333 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7334
7335         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7336         descriptors.
7337
7338         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7339         special case and handle mono_arch_delegate_invoke_impl() returning
7340         function descriptors.
7341
7342         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7343         trampolines return function descriptors, too.
7344
7345 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7346
7347         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7348         out_of_line optimization.
7349
7350 2009-01-21  Martin Baulig  <martin@ximian.com>
7351
7352         * mini.h
7353         (MonoCompile): Added `disable_deadce_vars' to disable removing
7354         unused variables.
7355
7356         * mini.c
7357         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7358         inside the debugger.
7359
7360         * liveness.c (mono_analyze_liveness): Don't remove any unused
7361         variables if `cfg->disable_deadce_vars' is set.
7362
7363 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7364
7365         * method-to-ir.c: Only apply exception constructor optimization if
7366         the the method actually belongs to an exception class.  Fixes
7367         #467456.
7368
7369 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7370
7371         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7372         change inside a #ifdef __mono_ppc64__.
7373
7374         * aot-compiler.c (compile_method): Remove the previous limitation.
7375
7376         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7377         on type variables in AOTed code.
7378         
7379         * aot-compiler.c (compile_method): Skip generic methods having type 
7380         constraints on their generic parameters.
7381
7382         * aot-compiler.c (compile_method): Check for methods which cannot be
7383         encoded inside RGCTX_FETCH patches as well.
7384
7385         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7386         build.
7387
7388 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7389
7390         * method-to-ir.c: Force the vtable variable in shared generic code
7391         for the case that they might show up on a stack trace where they
7392         are needed.
7393
7394         * mini-exceptions.c: Save and use generic sharing info as well as
7395         IP in stack traces to resolve shared generic instantiations.
7396
7397 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7398
7399         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7400         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7401
7402 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7403
7404         * method-to-ir.c: Do generic sharing for array constructors.
7405
7406 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7407
7408         * mini-exceptions.c (mono_print_thread_dump): Add information
7409         about the thread state using wapi_current_thread_desc.
7410
7411 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7412
7413         * basic-simd.cs: Tests for the new constructors. 
7414
7415 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7416
7417         * mini-ops.h: Added OP_EXPAND_*
7418
7419         * cpu-x86.md: Same.
7420
7421         * mini-x86.c (mono_arch_output_basic_block): Same.
7422         
7423         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7424
7425 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7426
7427         * iltests.il.in: Add a test for #467385.
7428
7429 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7430
7431         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7432         thread been cleaned up is not the same currently in execution.
7433
7434         Fixes appdomain-unload crashes on windows, osx and linux variants
7435         without the __thread keyword.
7436
7437 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7438
7439         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7440         (koush@koushikdutta.com). Implement this for android.
7441
7442         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7443         begins with a digit.
7444
7445         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7446         mono_marshal_get_write_barrier ().
7447
7448 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7449
7450         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7451         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7452         that pass them on a register pair.
7453
7454         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7455         test was crashing due to that.
7456
7457 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7458
7459         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7460         trampoline code. Include ucontext.h only if available.
7461
7462 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7463
7464         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7465         and doesn't check whether it's sharable, like it was before
7466         removing the shared generics hash.  This brings IronPython
7467         performance back to what it was before that change.
7468
7469 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7470
7471         * method-to-ir.c: Handle delegate invocation optimization earlier,
7472         otherwise it would be handled (much more slowly) by the
7473         final/sealed optimization.
7474
7475 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7476
7477         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7478         domain is not set. Fixes #465864.
7479
7480 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7481
7482         * method-to-ir.c: Don't stop sharing of generic methods with catch
7483         clauses - we already handle those.
7484
7485 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7486
7487         * mini.c, mini.h: lookup_generic_method() is now
7488         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7489         making the shared_generics_hash obsolete.
7490
7491 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7492
7493         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7494         use the red zone.  Make room on the stack first and then use it,
7495         not the other way around.
7496
7497 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7498
7499         * mini.c (mini_init): Call mono_xdebug_init ().
7500
7501         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7502
7503 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7504
7505         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7506
7507         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7508         trampolines.
7509
7510         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7511         debug+unwind info for trampolines.
7512
7513         * mini.c (mono_create_unwind_op): New helper function.
7514
7515         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7516
7517 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7518
7519         * aot-compiler.c: Fix the build.
7520
7521 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7522
7523         * Makefile.am: Update dtrace-prelink.sh location.
7524
7525 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7526
7527         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7528         optimization. Fixes #464520.
7529
7530 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7531
7532         * mini-amd64.c : Adding code to save/restore non-volatile registers
7533            on Winx64.
7534
7535         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7536           registers on Winx64.
7537
7538         Contributed under MIT/X11 license.
7539
7540 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7543         __GNUC_MINOR__ which can break when the major version changes.
7544
7545 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7546
7547         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7548
7549 2009-01-07  Geoff Norton  <gnorton@novell.com>
7550
7551         * helpers.c:  Allow mono -v -v -v to work on darwin.
7552
7553 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7554
7555         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7556           pattern. 
7557
7558         Contributed under MIT/X11 license.
7559
7560 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7561
7562         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7563         instead of directly accessing type->data.klass. Fixes #462016.
7564         (mono_allocate_stack_slots_full): Ditto.
7565
7566         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7567         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7568
7569         * aot-compiler.c (emit_plt): Fix ARM build.
7570
7571 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7572
7573         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7574         
7575         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7576         change.
7577
7578         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7579         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7580         #463357.
7581
7582         * iltests.il.in: Add a regression test.
7583
7584 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7585
7586         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7587
7588 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7589
7590         * basic-simd.cs: Add a regression test for #462457.
7591
7592 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7593
7594         * mini-ops.h: Add a definition of XPHI.
7595
7596         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7597
7598         * ssa.c (op_phi_to_move): Handle XPHI.
7599
7600         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7601
7602         Fixes #462457
7603
7604 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7605
7606         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7607
7608 2008-12-31  Geoff Norton  <gnorton@novell.com>
7609
7610         * mini-ppc.c: The prolog size allocated can be too small for darwin
7611         ppc32 under certain circumstances.  Also fix a small logic bug.
7612
7613 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7614
7615         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7616         while loading AOT methods.
7617
7618         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7619         since only the former is nulled out after a successful cast. This prevents
7620         crashes with rethrown exceptions when using --debug=casts.
7621
7622 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7623
7624         * mini.h: New macro for checking whether a method is final,
7625         i.e. whether the method or its class is marked final.
7626
7627         * method-to-ir.c: Use the new macro for all final-checks
7628         consistently.  Fixes the crash in the System.ServiceModel tests.
7629
7630 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7631
7632         * mini-exceptions.c (get_exception_catch_class): Corrected another
7633         overly strict assertion.
7634
7635 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7636
7637         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7638         Clobbering it is not allowed because the caller might use it as
7639         the vtable register in the interface call.
7640
7641 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7642
7643         * mini-exceptions.c (get_exception_catch_class): Corrected an
7644         overly strict assertion.
7645
7646 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7647         
7648         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7649
7650         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7651
7652         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7653
7654         * cpu-mips.md: correct lengths for certain long_ opcodes.
7655
7656         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7657
7658         * 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().
7659         
7660 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7661
7662         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7663         
7664 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7665         
7666         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7667         
7668 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7671         next basic block.
7672         
7673 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7674
7675         * 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
7676
7677         * 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)
7678         
7679 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7680         
7681         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7682         
7683 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7684
7685         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7686         gshared code. Fixes #458947.
7687
7688         * generics.cs: Add a test.
7689
7690 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7691         
7692         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7693         
7694         * mini-mips.c: first pass n32 code generation.
7695
7696         * mini-mips.h: datatypes and defines for n32 support.
7697
7698         * exceptions-mips.c: first pass n32 code generation.
7699         
7700         * tramp-mips.c: first pass n32 code generation.
7701         
7702         * cpu-mips.md: add long_ opcodes.
7703         
7704 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7705
7706         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7707
7708         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7709         
7710         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7711         
7712         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7713
7714         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7715
7716         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7717
7718         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7719
7720         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7721
7722         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7723
7724 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7725
7726         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7727
7728 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7729
7730         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7731
7732 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7733
7734         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7735         descriptors for helper functions directly in front of the code.
7736
7737 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7738
7739         * method-to-ir.c: Removed an unnecessary assertion.
7740
7741 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7742
7743         * method-to-ir.c: Merge SGEN changes from the old JIT.
7744
7745 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * driver.c (compile_all_methods_thread_main): Handle failure of
7748         mono_get_method ().
7749
7750 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7751
7752         * mini-ppc.c: Merged with mini-ppc64.c.
7753
7754         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7755
7756         * Makefile.am: Use the same sources for PPC and PPC64.
7757
7758         * mini-ppc64.c: Removed.
7759
7760 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7761
7762         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7763         code to mono_bb_is_fall_through.
7764         
7765         * branch-opts.c (mono_remove_critical_edges): Same.
7766
7767 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7768
7769         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7770         expect that an OP_BR_REG will be there.
7771
7772 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7773
7774         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7775         for the many branch ops. The original check miss OP_BR_REG.
7776
7777         Fixes #457574.
7778         
7779 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7780
7781         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7782
7783 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7784
7785         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7786         while holding the aot lock.
7787
7788 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7789
7790         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7791         
7792 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7793
7794         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7795           to release all runtime callable wrappers held by the runtime.
7796
7797         Contributed under MIT/X11 license.
7798
7799 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7800
7801         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7802           for Winx64.
7803
7804         Contributed under MIT/X11 license.
7805
7806 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7807
7808         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7809         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7810
7811 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7812
7813         * cpu-mips.md: fix ckfinite length
7814
7815         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7816         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7817         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7818         
7819 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7820
7821         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7822         
7823 2008-12-08  Geoff Norton  <gnorton@novell.com>
7824
7825         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7826         size by 8 bytes as well.
7827
7828 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7829
7830         * basic-simd.cs: Fix method names for Vector16b.
7831         
7832 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7833
7834         * basic-simd.cs: Fix method names for Vector16sb.
7835
7836 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7837
7838         * basic-simd.cs: Fix method names for Vector8us.
7839         
7840 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7841
7842         * basic-simd.cs: Fix method names for Vector8s.
7843         
7844 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7845
7846         * basic-simd.cs: Fix method names for Vector4ui.
7847
7848 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7849
7850         * basic-simd.cs: Fix method names for Vector2l.
7851
7852 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7853
7854         * basic-simd.cs: Fix method names for Vector2d.
7855
7856 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7857
7858         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7859         that are extension methods.
7860
7861 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7862
7863         * basic-simd.cs: Fix method names for Vector4f.
7864
7865 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7866
7867         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7868         as such. Fixes #456669.
7869
7870 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7871
7872         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7873         
7874 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7875
7876         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7877         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7878         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7879         (mips_adjust_stackframe): handle FP spills
7880                 
7881         * mini-ops.h: add mips_mtc1_s2
7882         
7883         * cpu-mips.md: add mips_mtc1_s2
7884         
7885 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7886
7887         * unwind.c: New file, move the unwind info encoding functions here from
7888         aot-compiler.c, so they could be used at runtime too.
7889
7890 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7891
7892         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7893         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7894         
7895 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7896
7897         * mini-mips.c: cleanup warnings
7898         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7899         (mips_adjust_stackframe): handle case of taking the address of stack locals
7900         
7901 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7902
7903         * aot-compiler.c: Implement a few functions missing from the asm writer.
7904         (emit_method_code): Only write symbols for methods when using the bin
7905         writer, since the assembler can't deal with the characters in our method
7906         names.
7907
7908         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7909
7910         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7911         call.
7912
7913         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7914         a bit to also restore %rax.
7915
7916 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7917
7918         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7919
7920 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7921
7922         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7923         arguments.
7924
7925 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7926
7927         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7928
7929         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7930         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7931
7932         * exceptions-ppc64.c: Removed.
7933
7934         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7935
7936 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7937
7938         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7939         tramp-ppc64.c.
7940
7941         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7942
7943         * tramp-ppc64.c: Removed.
7944
7945 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7946
7947         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7948         the TYPESPEC table.
7949
7950 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7951
7952         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7953
7954         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7955         mini-ppc.h instead of mini-ppc64.h.
7956
7957         * mini-ppc64.h: Removed.
7958
7959 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7960
7961         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7962         
7963         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7964         
7965 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7966
7967         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7968         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7969         code easier.
7970
7971 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7972
7973         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7974
7975 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7976
7977         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7978
7979 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7980
7981         * basic-simd.cs: Tests for operator == and != on Vector4f.
7982
7983 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7984
7985         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7986
7987         * simd-intrinsics.c: Kill useless enum.
7988
7989 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7990
7991         * cpu-mips.md: add long_conv_to_ovf_i4_2
7992         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7993
7994 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7995
7996         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7997         
7998         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7999
8000 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8001
8002         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8003         
8004 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8005
8006         * basic-simd.cs: Add tests for new methods.
8007
8008 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8009
8010         * simd-intrinsics.c: Add support for operator == and !=
8011         on Vector4(u)i.
8012
8013         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8014
8015 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8016
8017         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8018
8019 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8020
8021         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8022
8023         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8024         MONO_PATCH_INFO_ICALL_ADDR.
8025
8026         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8027
8028         * aot-compiler.c: Resurrect full-aot support.
8029
8030 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8031
8032         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8033         
8034 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8035
8036         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8037         
8038 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8039
8040         * basic-simd.cs: Fix tests to work under ppc.
8041         Remove tests for methods that will be removed.
8042
8043 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8044
8045         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8046         generic type (via a typedef or typeref) correctly.
8047
8048 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8049
8050         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8051         diagnose an assertion failure.
8052
8053 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8054
8055         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8056         Fix trampoline size.
8057
8058         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8059         conversion opcodes are implemented natively instead via emulation.
8060
8061 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8062
8063         * cpu-mips.md: remove mips_xori
8064
8065         * mini-ops.h:  remove mips_xori
8066
8067         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8068
8069         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8070         
8071         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8072         
8073 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8074
8075         * cpu-mips.md: fix instruction lengths.
8076
8077         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8078
8079         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8080
8081         * mini-ops.h: fix slti / sltiu op profiles.
8082         
8083 2008-12-02  Martin Baulig  <martin@ximian.com>
8084
8085         * method-to-ir.c (mono_method_to_ir): Disable debugging
8086         information for the init locals block to make the debugger stop
8087         after all locals have been initalized.
8088
8089 2008-12-02  Martin Baulig  <martin@ximian.com>
8090
8091         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8092         running inside the debugger.
8093
8094 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8095
8096         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8097         is enabled.
8098
8099         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8100         alu->alu imm optimization which only shows if deadce is disabled.
8101
8102         * aot-compiler.c: Rename the function names for the binary and asm writers
8103         so they can coexist in the same process. Rework the xdebug code to use the
8104         asm writer. This avoids the need to call into the runtime to dump the
8105         debugging info. Add more debugging info for types.
8106
8107         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8108
8109         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8110         cpu description tables, they can't occur in cpu-<ARCH>.md.
8111
8112         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8113         the stack in CEE_LDFLDA. Fixes #450542.
8114
8115         * generics.cs: Add a new test.
8116
8117 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8118
8119         * mini-ops.h: updated MIPS opcodes
8120         * mini-mips.c: decompose long opts
8121         * mini-mips.h: decompose long opts
8122         
8123 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8124
8125         * cpu-mips.md: fix length on int_rem_un
8126         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8127         
8128 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8129
8130         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8131
8132         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8133
8134 2008-11-29  Martin Baulig  <martin@ximian.com>
8135
8136         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8137         mono_debug_using_mono_debugger() in addition to the
8138         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8139
8140 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8141
8142         * mini-ops.h: updated more MIPS opcodes
8143         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8144         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8145         
8146 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8147
8148         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8149
8150 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8151
8152         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8153         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8154         * mini-ops.h: correct selected mips opcode entries
8155         
8156 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8157
8158         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8159         make them work.
8160
8161 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8162
8163         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8164
8165 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8166
8167         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8168         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8169         * mini-mips.h: disable IMT
8170         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8171         
8172 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8173
8174         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8175
8176 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8177
8178         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8179
8180 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8181
8182         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8183         consistency.
8184
8185 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8186
8187         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8188         for Set/GetVector aligned versions.
8189
8190 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8191
8192         * basic-simd.cs: Add tests for Get/SetVector.
8193
8194 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8195
8196         * mini.c: Removed g_slist_append_mempool().  Now in
8197         metadata/mempool.c.
8198
8199 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8200
8201         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8202         size properly and make the bounds check optional.
8203
8204         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8205         for SetVector and IsAligned.
8206
8207 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * mini.c: Remove unused mono_normalize_opcodes () function.
8210
8211 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8212
8213         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8214         using the new atomic add ops now.
8215
8216         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8217         add.
8218
8219 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8220
8221         * mini-ppc64.c: Several fixes.
8222
8223 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8224
8225         * cpu-mips.md: added jump_table
8226         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8227
8228 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8229
8230         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8231
8232 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8233
8234         * mini-ops.h: corrected a handful of MIPS opcodes.
8235
8236 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8237
8238         * aot-compiler.c: MIPS to use ELF writer
8239
8240 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8241
8242         * mini-codegen.c: remove MIPS specific assert.
8243
8244 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8245
8246         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8247         fixes.  PPC64 now passes most of the runtime regressions.
8248
8249 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8250
8251         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8252         volatile intervals a bit.
8253
8254 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8255
8256         * basic-long.cs: New test case.
8257
8258 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8259
8260         * mini.c (mini_method_compile): Disable globalra for large methods for 
8261         now.
8262
8263         * regalloc2.c (order_moves): Add fp support.
8264
8265         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8266         source bblock ends with an OP_BR_REG.
8267
8268         * ratests.cs: Add a new test.
8269
8270 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8271
8272         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8273         sharing.  PPC64 now passes generics.exe.
8274
8275 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8276
8277         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8278
8279 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8280
8281         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8282         memory when mono_jit_info_table_find () can't find the method in the
8283         LMF case.
8284
8285         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8286         AOTed code too.
8287         
8288         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8289         writer too.
8290
8291 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8292
8293         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8294         Several fixes.  PPC64 now runs exceptions.exe and
8295         devirtualization.exe.
8296
8297 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8298
8299         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8300         arrays.exe and basic-math.exe.
8301
8302 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8303
8304         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8305         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8306
8307 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8308
8309         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8310
8311 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8312
8313         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8314
8315         * ir-emit.h: Move macros from method-to-ir.c to here.
8316
8317 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8318
8319         * mini-ops.h: Correct the long simd ops to use LREG.
8320
8321 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8322
8323         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8324         
8325         * mini-ops.h: Correct the dreg type of a few long opcodes.
8326
8327         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8328         Add netbsd support.
8329
8330 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8331
8332         * mini-ppc.c: remove negative stack references in epilog
8333         for platforms that don't support the red zone.
8334
8335 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8336
8337         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8338         point regs.  Now PPC64 passes basic-calls.exe.
8339
8340 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8341
8342         * basic-simd.cs: Add tests for accessors of Vector2l.
8343
8344 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8345
8346         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8347
8348         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8349         
8350         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8351
8352 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8353
8354         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8355         PPC64 passes basic-long.exe.
8356
8357 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8358
8359         * decompose.c: Decompose carry and overflow add on PPC64 like on
8360         other 64 bit archs.  Don't decompose sub at all on PPC64.
8361
8362         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8363         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8364         basic-long.exe.
8365
8366 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8367
8368         * basic-simd.cs: Add tests for accessors of Vector2d.
8369
8370 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8371
8372         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8373
8374         * cpu-x86.md: Same.
8375
8376         * mini-x86.c (mono_arch_output_basic_block): Same.
8377         
8378         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8379
8380 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8381
8382         * basic-simd.cs: Add tests for accessors of Vector4f.
8383
8384 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8385
8386         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8387
8388         * cpu-x86.md: Same.
8389
8390         * mini-x86.c (mono_arch_output_basic_block): Same.
8391         
8392         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8393
8394 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8395
8396         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8397
8398 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8399
8400         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8401
8402         * cpu-x86.md: Same.
8403
8404         * mini-x86.c (mono_arch_output_basic_block): Same.
8405         
8406         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8407
8408 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8409
8410         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8411
8412 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8413
8414         * simd-intrinsics.c: Enable setters for Vector16sb.
8415
8416 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8417
8418         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8419
8420         * cpu-x86.md: Same.
8421
8422         * mini-x86.c (mono_arch_output_basic_block): Same.
8423         
8424         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8425
8426 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8427
8428         * simd-intrinsics.c: Implement setter for Vector8us.
8429
8430 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8431
8432         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8433         for dead variables.
8434
8435 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8436
8437         * mini-ppc.c: remove references to the red zone in the prolog
8438         (for systems that don't support it).
8439
8440 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8441
8442         * cpu-ppc64.md: Fixed a few instruction lengths.
8443
8444         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8445         now.
8446
8447 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8448
8449         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8450         basic.exe now.
8451
8452 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8453
8454         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8455
8456 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8457
8458         * mini-ops.h: Added OP_INSERT_I2.
8459
8460         * cpu-x86.md: Same.
8461
8462         * mini-x86.c (mono_arch_output_basic_block): Same.
8463         
8464         * simd-intrinsics.c: Implement setter for Vector8s.
8465
8466         * simd-methods.h: Add the names of get setters of Vector8s.
8467
8468 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8471         
8472         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8473         parameters.
8474
8475         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8476
8477 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8478
8479         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8480         for PPC64.  An empty program runs now.
8481
8482 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8483
8484         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8485
8486         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8487         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8488         info for JITted code is emitted into a shared library, loadable into gdb.
8489
8490 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8491
8492         * Makefile.am: Changes to build PPC64.
8493
8494         * mini-arch.h: Include mini-ppc64.h on PPC64.
8495
8496 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8497
8498         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8499         in PPC code up to r119147.
8500
8501 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8502
8503         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8504         cpu-ppc64.md: Changes for PPC64.
8505
8506         Based on code submitted by andreas.faerber@web.de at
8507         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8508         X11/MIT license.
8509
8510 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8511
8512         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8513         cpu-ppc64.md: Copied from the corresponding PPC files from
8514         r118846.
8515
8516 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8517
8518         * mini-ops.h: Added OP_ROUND.
8519
8520         * cpu-x86.md: Added round.
8521
8522         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8523
8524         * basic-math.cs: Added test_0_round to test rounding.
8525
8526         Contributed under MIT/X11 license.
8527
8528 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8529
8530         * aot-compiler.c : Fix the Winx64 build.
8531
8532         Contributed under MIT/X11 license.
8533
8534 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8535
8536         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8537         in OP_EXTRACT_R8 to avoid possible stack corruption.
8538
8539 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8540
8541         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8542
8543         * cpu-x86.md: Added extract_r8.
8544
8545         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8546         
8547         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8548         a couple of OP_EXTRACT_I4.
8549
8550         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8551
8552         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8553
8554 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8555
8556         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8557         and not 4.1. 
8558
8559 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8560
8561         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8562         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8563
8564         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8565         are not needed any more.
8566
8567         * mini.h: Remove the unused INS_LIST macros.
8568
8569         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8570         longer needed.
8571
8572         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8573         ir-emit.h.
8574
8575         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8576         mono_alloc_ireg () instead.
8577
8578         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8579         macros.
8580
8581         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8582         on amd64.
8583
8584         * aot-runtime.c (load_aot_module): Disable AOT when running under
8585         CAS.
8586
8587         * mini-amd64.h: Change the monitor fastpath defines to check for
8588         !PLATFORM_WIN32 so they work on *bsd too.
8589
8590         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8591
8592         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8593
8594         * mini.h (MonoCompile): Remove new_ir flag.
8595
8596         * regalloc.h regalloc.c: Remove unused code.
8597
8598         * cpu-*.md: Remove more unused opcodes.
8599
8600         * simple-cee-ops.h simple-mini-ops.h: Removed.
8601
8602         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8603         
8604 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8605
8606         * aliasing.h: Removed.
8607
8608         * *.c: Remove references to aliasing.h and inssel.h.
8609
8610         * mini.c: Remove additional unused functions.
8611
8612         * mini-ops.h cpu-*.md: Remove unused opcodes.
8613
8614 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8615
8616         Remove the old JIT code.
8617
8618         * inssel*.brg: Removed.
8619
8620         * ssa.c abcremoval.c aliasing.c: Removed.
8621
8622         * ssa2.c: Renamed to ssa.c.
8623
8624         * abcremoval2.c: Renamed to abcremoval.c.
8625
8626         * *.c: Removed all !cfg->new_ir code.
8627
8628         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8629         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8630
8631         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8632         
8633 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8634
8635         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8636         to simplify the code and cut back on the number of global symbols in the AOT
8637         file.
8638         
8639         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8640
8641 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8642
8643         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8644         with the got/got_info tables.
8645
8646         * mini.h: Bump AOT file format version.
8647         
8648         * unwind.h: New file, contains definitions for stack unwinding.
8649
8650         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8651         to cfg->unwind_ops.
8652         
8653         * aot-compiler.c: Generalize the emitting of unwind information to use the
8654         information in cfg->unwind_ops.
8655
8656         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8657
8658         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8659         AOT method frames. Enable writing symbols for methods by default.
8660
8661 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8662
8663         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8664         and make it work with vectors of element sizes 1, 2 and 4.
8665
8666         * simd-intrinsics.c: Enable getter for all vectors with element size
8667         1, 2 or 4.
8668
8669         * simd-methods.h: Add the names of other getters.
8670
8671         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8672
8673         * cpu-x86.md: Same.
8674
8675         * mini-x86.c: Same.
8676
8677 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8678
8679         * mini-ppc.h: portability fix.
8680
8681 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8682
8683         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8684         buggy and will overwrite it.
8685
8686 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8687
8688         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8689         Use it to emit local symbols for all methods so AOTed methods show up with
8690         their full name in gdb/valgrind output.
8691
8692 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8693
8694         * mini-ppc.c: portability fixes.
8695
8696 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8697
8698         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8699         entries out of the if (!generic_shared...) code so it is always done.
8700         (mono_class_init_trampoline): Do the patching when running under valgrind
8701         too, newer versions of valgrind have no problems with it.
8702
8703 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8704
8705         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8706         further sections.
8707
8708 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8709
8710         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8711         filters.
8712
8713 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8714
8715         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8716
8717 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8718
8719         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8720
8721         * cpu-x86.md: Same.
8722
8723         * mini-x86.c: Same.
8724
8725         * simd-intrinsics.c: Same.
8726
8727 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8728
8729         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8730
8731 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8732
8733         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8734         to work with more Vector types.
8735
8736 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8737
8738         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8739         store the elemens directly instead of using and intermediate.
8740
8741 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8742
8743         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8744
8745         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8746         to preserve %eax for aot plt trampolines.
8747
8748         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8749         (encode_method_ref): Flag synchronized methods so they won't go through
8750         the AOT trampoline.
8751
8752         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8753         wrappers.
8754
8755         * cpu-ia64.md (jmp): Increase max length.
8756
8757 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8758
8759         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8760         open generic classes.
8761
8762         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8763
8764         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8765         box+brtrue optimization since it causes test failures on x86.
8766
8767 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8768
8769         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8770
8771         * cpu-x86.md: Same.
8772
8773         * mini-x86.c: Same.
8774
8775         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8776         for simd ctor values. 
8777
8778         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8779         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8780
8781 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8782
8783         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8784         LogicalRightShift.
8785
8786         * simd-instrincs.c: Same.
8787
8788         * basic-simd.cs: Same.
8789
8790 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8791
8792         * ratests.cs: Add more tests.
8793
8794         * regalloc2.c (add_spill_code): Handle more corner cases.
8795
8796 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8797
8798         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8799         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8800         both the source an destination of an instruction.
8801
8802 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8803
8804         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8805         wapihandles.c: more portability changes.
8806
8807 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8808
8809         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8810         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8811         safe to execute in a signal handler and the kernel provides better
8812         the info in /proc/self/smaps. Avoid the assert on sigaction during
8813         cleanup.
8814
8815 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8816
8817         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8818         do the bblock linking hack if it is actually needed.
8819
8820         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8821         up linking.
8822
8823         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8824         crash problem is fixed.
8825
8826         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8827         bblocks.
8828
8829         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8830         for catch clauses.
8831         (mini_method_compile): Set the starting value of next_vreg to 
8832         MAX_IREGS + MAX_FREGS when using globalra.
8833
8834         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8835         filter clauses with BB_EXCEPTION_HANDLER.
8836
8837         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8838
8839 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8840
8841         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8842         space for stdcall.  Fixes regressions on Win32.
8843
8844 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8845
8846         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8847         bblocks.
8848         (linear_scan): Remove an assert which doesn't seem to be needed.
8849
8850         * local-propagation.c (mono_local_deadce): Avoid a call to
8851         MONO_DELETE_INS which would screw up the instruction linking.
8852
8853         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8854
8855         * regalloc2.c: Upgrade to work the current JIT code.
8856
8857 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8858
8859         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8860         case.
8861
8862         * aot-runtime.c: Remove some dead code.
8863
8864         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8865         consistency.
8866         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8867
8868         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8869         trampolines using sscanf since atoi doesn't work on large unsigned values.
8870
8871         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8872         Initialize code_size.
8873
8874 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8875
8876         * method-to-ir.c (mini_emit_inst_for_method): Make
8877         Interlocked.CompareExchange work for Int arguments on 32 bit
8878         archs, as well.
8879
8880 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8881
8882         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8883
8884 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8885
8886         * main.c Fix MSVC build.
8887
8888         Contributed under MIT/X11 license.
8889
8890 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8891
8892         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8893         alignment larger than 8 bytes are aligned correctly, too.
8894
8895         * mini.c: Honor the min_align field of MonoClass when laying out
8896         the stack.
8897
8898 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8899
8900         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8901
8902         * aot-compiler.c (emit_plt): Fix a warning.
8903         
8904         * aot-compiler.c: Implement ARM support in the binary writer.
8905
8906 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8907
8908         * basic-simd.cs: Add test for getter with byref arg.
8909         Fix the naming of a few tests.
8910         Add missing checks to a test.
8911
8912 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8913
8914         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8915
8916         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8917         most of the full-aot support for monitor enter/exit trampolines.
8918
8919         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8920         enter/exit trampoline creation functions.
8921
8922         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8923         make dist.
8924
8925 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8926
8927         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8928         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8929         implement the needed functionality without adding crap to the runtime.
8930
8931 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8934         non-x86 builds.
8935
8936         * mini.c (mono_build_date): New global version holding the build date in
8937         string format.
8938         
8939         * Makefile.am (buildver.c): Generate a file containing the build date.
8940
8941         * main.c: Set the build date from the generated file.
8942
8943         * mini.c (mono_get_runtime_build_info): New helper function returning build
8944         information in a string format.
8945         
8946         * driver.c (mono_main): Print the build date in --version.
8947
8948         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8949         file when the bind-to-runtime-version option is used.
8950
8951 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8952
8953         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8954
8955 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8956
8957         * simd-methods.h: Rename prefetch methods.
8958
8959         * simd-intrinsics.c: Same.      
8960
8961 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8962
8963         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8964         sizes.
8965
8966 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8967
8968         * aot-compiler.c: Use the bundled elf header files instead of depending on
8969         the system one.
8970         
8971         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8972         mempool.
8973
8974         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8975         on every call.
8976
8977 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8978
8979         * cpu-x86.md: Add store nta ops.
8980
8981         * mini-ops.h: Same.
8982
8983         * mini-x86.c: Same.
8984
8985         * mini.h: Add an enum for simd prefetch modes.
8986
8987         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8988         of store. Use the changed code to support store nta.
8989
8990         * simd-intrinsics.c: Add prefetch ops for all vector types.
8991
8992 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8993
8994         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8995         threads.
8996         
8997         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8998         names.
8999
9000         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9001         trampolines.
9002
9003 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9004
9005         * mini-x86.c: Fixed commit.
9006
9007 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9008
9009         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9010
9011 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9012
9013         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9014         and MONITOR_EXIT, for the ASM fastpaths.
9015
9016         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9017         available.
9018
9019         * mini.c, patch-info.h: Signature and patch infos for
9020         Monitor.Enter/Exit trampolines.
9021
9022         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9023
9024         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9025         Monitor.Enter/Exit ASM fastpath for Linux.
9026
9027 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9028
9029         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9030
9031         * objects.cs: Add a new test.
9032         
9033         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9034
9035         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9036         if MONO_LOG_LEVEL is set.
9037
9038         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9039
9040         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9041
9042         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9043         
9044         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9045         of file offsets. Align the sections belonging to the data segment to 
9046         PAGESIZE.
9047
9048 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9049
9050         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9051         elf.h. Port it to amd64.
9052
9053 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9054
9055         * driver.c: Enable SIMD by default.
9056
9057 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9058
9059         * cpu-x86.md: Add prefetch op.
9060
9061         * mini-ops.h: Same.
9062
9063         * mini-x86.c: Same.
9064
9065         * mini.h: Add an enum for simd prefetch modes.
9066
9067         * simd-methods.h: Add prefetch function names.
9068
9069         * simd-intrinsics.c: Add prefetch ops for all vector types.
9070
9071 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * aot-compiler.c (emit_bytes): Speed this up a little.
9074
9075 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9076
9077         * aot-compiler.c: Add JIT time etc. statistics.
9078         
9079         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9080
9081         * mini.h (MonoCompile): Add 'got_offset' field.
9082
9083         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9084         method_got_offsets array.
9085
9086         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9087         wrappers.
9088
9089         * aot-compiler.c (compile_method): Add generic method instances referenced
9090         by the method to the list of methods to be compiled, this is required so if
9091         A<T> references B<T>, and another assembly references A<int>, then it will
9092         also get a copy of B<int>.
9093
9094         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9095         when checking for monitor enter/exit.
9096
9097 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9098
9099         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9100         for Monitor.Enter and Monitor.Exit if enabled.
9101
9102         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9103         Solaris.
9104
9105 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9106
9107         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9108         of an OP_MOVE. Fixes #440046.
9109
9110         * basic-long.cs: Add a new test.
9111
9112 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9113
9114         * mini.h: Add synchronization note for the managed counter-part.
9115
9116         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9117         returns the simd caps of the current cpu.
9118
9119 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9120
9121         * basic-simd.cs: Remove Console.WriteLine.
9122
9123 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9124
9125         * basic-simd.cs: New tests for Vector2ul.
9126
9127 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9128
9129         * simd-intrinsics.c: Add new vector type Vector2ul.
9130
9131 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9132
9133         * basic-simd.cs: New tests for Vector2l.
9134
9135 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9136
9137         * cpu-x86.md: Add long version of most packed int ops.
9138
9139         * mini-ops.h: Same.
9140
9141         * mini-x86.h: Same.
9142
9143         * simd-intrinsics.c: Add new vector type Vector2l.
9144
9145 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9146
9147         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9148
9149         * simd-methods.h: Remove SN_op_BitwiseXor.
9150
9151 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9152
9153         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9154         alignment.
9155
9156 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9157
9158         * basic-simd.cs: Test for Vector2d.
9159
9160         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9161         value.
9162
9163 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9164
9165         * cpu-x86.md: Add double version of all packed float ops.
9166
9167         * mini-ops.h: Same.
9168
9169         * mini-x86.h: Same.
9170
9171         * simd-intrinsics.c: Add new vector type Vector2d.
9172
9173         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9174
9175         * simd-methods.h: Add Duplicate.
9176
9177 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9178
9179         * basic-simd.cs: Test for packing with signed saturation.
9180
9181 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9182
9183         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9184         found in the TYPESPEC table.
9185
9186 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9187
9188         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9189         too.
9190
9191         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9192
9193         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9194         instead of the RVA, since the RVA can be changed by tools like the cil 
9195         stripper.
9196
9197         * method-to-ir.c (mono_method_to_ir2): Ditto.
9198
9199         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9200         (deserialize_variable): Ditto.
9201
9202 2008-10-25  Martin Baulig  <martin@ximian.com>
9203
9204         * debug-mini.c (write_variable): Use
9205         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9206
9207 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9208
9209         * cpu-x86.md: Add unsigned variants of packd and packw.
9210
9211         * mini-ops.h: Same.
9212
9213         * mini-x86.h: Emit the right instruction for packd and packw.
9214         Add unsigned variants of packd and packw.
9215
9216         * simd-intrinsics.c: Packd and packw were used in place of their
9217         unsigned variants. Change that.
9218         Add intrinsics for (Signed)PackWithSignedSaturation.
9219
9220         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9221
9222 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9223
9224         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9225
9226 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9227
9228         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9229
9230         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9231
9232         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9233         sse instructions.
9234
9235         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9236
9237 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9238
9239         * method-to-ir.c, mini.c: Special casing for the synchronized
9240         wrapper for the ldtoken+GetTypeFromHandle case.
9241
9242 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9243
9244         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9245
9246         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9247         created/split bblocks.
9248
9249 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9250
9251         * mini-ops.h: Add packed signed mul high.
9252         
9253         * cpu-x86.md: Same.
9254
9255         * mini-x86.c (mono_arch_output_basic_block): Same.
9256
9257         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9258
9259         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9260
9261 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9262
9263         * basic-simd.cs: Tests for Vector16sb.
9264
9265 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9266
9267         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9268
9269 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9270
9271         * mini-ops.h: Add packed signed min, max and compare greater.
9272         
9273         * cpu-x86.md: Same.
9274
9275         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9276         saturation.
9277
9278         * simd-methods.h: Add CompareGreaterThan.
9279
9280         * simd-methods.h: Remove CompareEquals.
9281
9282         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9283
9284         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9285
9286         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9287         CompareEqual.
9288
9289 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9290
9291         * basic-simd.cs: Fix tests due to change in the API.
9292
9293 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9294
9295         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9296
9297 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9298
9299         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9300
9301         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9302         inst_offset as this has invalid values for LDADDR.
9303
9304 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9305
9306         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9307
9308         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9309
9310 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9311
9312         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9313         for accessing field->data.
9314
9315 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9316
9317         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9318
9319 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9320
9321         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9322
9323         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9324
9325 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9326
9327         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9328         from the cfg mempool.
9329
9330 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9331
9332         * basic-simd.cs: Tests for new methods in Vector8us.
9333
9334 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9335
9336         * mini-ops.h: Add multiply and store high.
9337         
9338         * cpu-x86.md: Same.
9339
9340         * mini-x86.c (mono_arch_output_basic_block): Same.
9341
9342         * simd-methods.h: Same.
9343
9344         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9345         and CompareEqual.
9346
9347 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9348
9349         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9350         mono_class_setup_vtable ().
9351
9352         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9353         mono_class_get_vtable_entry () for accessing klass->vtable.
9354
9355         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9356
9357         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9358         found.
9359
9360         * method-to-ir.c (mono_save_token_info): Don't save references made from
9361         wrappers.
9362
9363         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9364         of generic instances.
9365
9366         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9367
9368 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9369
9370         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9371         OP_JMP depends on the method signature.  Calculate it properly.
9372
9373 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9374         
9375         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9376         called directly.
9377
9378         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9379         instances.
9380         (emit_extra_methods): Add another table mapping method indexes to 
9381         offsets in the extra_method_info table.
9382
9383         * mini.h: Bump AOT file format version.
9384         
9385         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9386         and mono_aot_get_method_from_token () into one function.
9387
9388 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9389
9390         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9391         separate counter.
9392
9393 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9394
9395         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9396         methods.
9397
9398         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9399         disable_aot.
9400
9401         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9402
9403         * mini.h: Bump aot file format version.
9404
9405         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9406         AOT file can contain native code for methods which are not in the METHOD
9407         table. Generate code for non-sharable generic instances of generic methods
9408         found in the METHODSPEC table.
9409         
9410         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9411         encoding generic type handles.
9412
9413         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9414         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9415
9416         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9417         macros + MONO_ADD_INS.
9418
9419         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9420         context as well.
9421
9422         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9423
9424         * mini.h: Bump aot file format version.
9425
9426         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9427
9428 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9429
9430         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9431         platforms, with definable stack alignment value.  Set to 16 now
9432         for all platforms.
9433
9434         * mini.c, mini.h, driver.c: Command line option for disabling
9435         stack alignment.
9436
9437 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9438
9439         * basic-simd.cs: Tests for new methods in Vector4ui.
9440
9441 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9442
9443         * mini-ops.h: Add packed int shuffle.
9444         
9445         * cpu-x86.md: Same.
9446
9447         * mini-x86.c (mono_arch_output_basic_block): Same.
9448
9449         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9450         extract mask, max, min, shuffle.
9451
9452         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9453
9454 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9455
9456         * basic-simd.cs: Tests for new methods in Vector8us.
9457
9458 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9459
9460         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9461         RuntimeTypeHandle, not a TypedReference.
9462
9463 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9464
9465         * simd-intrinsics.c: remove relocations.
9466
9467 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9468
9469         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9470         optimizations from the x86 backend.
9471
9472 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9473
9474         * simd-methods.h, simd-intrinsics.c: debloat method names and
9475         prepare for no relocations.
9476
9477 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9478
9479         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9480         
9481         * cpu-x86.md: Same.
9482
9483         * mini-x86.c (mono_arch_output_basic_block): Same.
9484
9485         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9486         extract mask, max, min and sum of absolute differences.
9487
9488         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9489         method name.
9490
9491 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9492
9493         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9494         Renamed one test for consistency.
9495
9496 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9497
9498         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9499         fix to the code that deal with other blocks.
9500
9501 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9502
9503         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9504
9505 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9506
9507         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9508         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9509         able to process the source reg.
9510
9511 2008-10-16  Martin Baulig  <martin@ximian.com>
9512
9513         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9514
9515         * inssel.brg: Add `OP_HARD_NOP'.
9516
9517         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9518
9519         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9520         `OP_HARD_NOP' instruction when running inside the debugger.
9521
9522         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9523         `OP_HARD_NOP' instruction when running inside the debugger.
9524
9525 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9526
9527         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9528         now works. The issue with the regalloc tripping up no longer
9529         happens.
9530
9531         * simd-intrinsics.c (load_simd_vreg): Same.
9532
9533 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9534         
9535         * basic-simd.cs: Tests for new Vector8ui methods.
9536
9537 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9538
9539         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9540         only for type. This fixes crashes where MonoInst::klass is checked
9541         for ops of type != VTYPE or OBJ.
9542
9543         * simd-intrinsics.c (load_simd_vreg): Same.
9544
9545 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9546
9547         * mini-ops.h: Add ops for packed shuffle/max/avg and
9548         extract mask.
9549         
9550         * cpu-x86.md: Same.
9551
9552         * mini-x86.c (mono_arch_output_basic_block): Same.
9553
9554         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9555         extract mask.
9556
9557         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9558         to emit extract mask op.
9559
9560         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9561         to emit word shuffles.
9562
9563 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9564
9565         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9566         the largest alignment needed by a variable, but at least
9567         sizeof(gpointer).
9568
9569 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9570
9571         * basic-simd.cs: Tests for the fixes in the last commit.
9572
9573 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9574
9575         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9576         no longer handles STACK_PTR input.
9577
9578         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9579
9580         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9581         get_simd_vreg   but handles STACK_PTR input.
9582
9583         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9584         as the input can be an arbitrary pointer.
9585
9586         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9587         LDADDR local optimization directly otherwise use a store op.
9588
9589 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9590
9591         * basic-simd.cs: Tests for dup low and dup high.
9592
9593 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9594
9595         * mini-ops.h: Add dup low and dup high ops.
9596         
9597         * cpu-x86.md: Same.
9598
9599         * mini-x86.c (mono_arch_output_basic_block): Same.
9600
9601         * simd-intrinsics.c (vector4f_intrinsics): Same.
9602
9603 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9604
9605         * basic-simd.cs: Tests for recently added functionality.
9606
9607 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9608
9609         * mini-ops.h: Add remaining sse1 fp ops.
9610         
9611         * cpu-x86.md: Add remaining sse1 fp ops.
9612
9613         * mini-x86.c (mono_arch_output_basic_block): Same.
9614
9615         * mini.h: Add enum for simd FP compare conditions.
9616
9617         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9618
9619         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9620         so the backed can generate the appropriate op.
9621
9622 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9623         This patch squeese one more byte from the SimdIntrinsc struct.
9624
9625         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9626         a a shift amount intead of simply or'ing it.
9627
9628         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9629
9630         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9631         byte so we can have an aditional flags field without increasing struct size.
9632
9633         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9634         against the simd_supported_versions bitmask.
9635
9636         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9637
9638 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9639
9640         * mini.c: remove rawbuffer code (the only use here is unsafe because
9641         it takes locks during signal handling and the kernel now provides much
9642         better info in proc/pid/smaps these days).
9643
9644 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9645
9646         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9647         OP_X86_PUSH_OBJ. Fixes #434620.
9648
9649         * objects.cs: Add a test.
9650         
9651 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9652
9653         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9654         that the packuswb/packusdw don't work with unsigned numbers for what
9655         would be negative numbers in signed format.
9656
9657         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9658         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9659
9660         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9661
9662         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9663
9664         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9665
9666         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9667
9668         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9669         add more ops.
9670
9671         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9672         version as the enum in mini.h.
9673
9674         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9675         for sse3 ops, check the simd_version field if present. This way the code
9676         works with all versions of sse.
9677
9678 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9679
9680         * simd-intrinsics.c: Fixed intrinsic name typo.
9681
9682         * mini.h: Added missing simd exported function.
9683
9684         * basic-simd.cs: Added tests for Vector4ui.
9685         Fixed broken test for Vector16b.
9686
9687 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9688
9689         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9690         the max length to 64.
9691
9692 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9693
9694         * method-to-ir.c: Only do the fast virtual generic method call for
9695         non-wrapper methods.
9696
9697         * mini.h, mini-trampolines.c: The new generic virtual remoting
9698         trampoline handles virtual method calls via the vtable (as done by
9699         the fast virtual generic method calls) to remoting proxies.
9700
9701         * mini.c (mono_jit_create_remoting_trampoline): For generic
9702         methods reate a generic virtual remoting trampoline.
9703
9704         * mini-amd64.h: Enable fast virtual generic method calls again.
9705
9706 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9707
9708         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9709         restore registers when doing tail calls.
9710
9711 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9712
9713         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9714         Vector4ui.
9715
9716 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9717
9718         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9719
9720 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9721
9722         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9723
9724 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9725
9726         * basic-simd.cs: Retrofit for API changes.
9727
9728 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9729
9730         * mini-ppc.c: Handle integer stack arguments for tail calls.
9731
9732 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9733
9734         * optflags-def.h: Removed sse3 optimization.
9735
9736         * driver.c: Same.
9737
9738         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9739         sse3.
9740
9741         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9742
9743         * mini.h: Added enumeration with simd versions.
9744
9745         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9746         for detecting SSE3.
9747
9748         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9749
9750         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9751
9752 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9753
9754         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9755
9756         * basic-simd.cs: Fixed test naming.
9757
9758 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9759
9760         * mini-ops.h: Added ops for packed and saturated math, shifts
9761         and packing/unpacking.
9762
9763         * cpu-x86.md: Added descriptors for the above ops.
9764
9765         * mini-x86.c: Added code to emmit the above ops.
9766
9767         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9768
9769 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9770
9771         * aot-compiler.c (compile_method): Enable AOT for generic code.
9772
9773         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9774
9775 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9776
9777         * mini.c: add a workaround for a common screwup that ends up blamed
9778         to mono (other processes blocking signal delivery).
9779
9780 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9781
9782         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9783         in the LDFLD/STFLD opcodes. Fixes #432673.
9784
9785         * iltests.il.in: Add a new test.
9786
9787 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9788
9789         * mini-arm.c: attach the thread in unmanaged->managed transitions
9790         using delegates (bug #433148).
9791
9792 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9793
9794        * basic-simd.cs: Use new ShuffleSel constants.
9795
9796 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9797
9798         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9799
9800         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9801         only disable simd intrinsics if no sse2 is detected.
9802
9803         * optflags-def.h: Added sse3.
9804
9805         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9806         is disabled.
9807
9808 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9809
9810         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9811         when adding delegate-invoke wrappers.
9812
9813 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9814
9815         * Makefile.am: Reenable the simd tests.
9816
9817 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9818
9819         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9820           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9821           other vreg is allocated to that hreg.
9822
9823         Contributed under MIT/X11 license.
9824
9825 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9826
9827         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9828         yet checked in.
9829
9830 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9831
9832         * basic-simd.cs: New test suite for SIMD intrinsics.
9833
9834         * Makefile.am: Added new tests.
9835
9836 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9837
9838         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9839
9840         * mini-ops.h: Same.
9841
9842         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9843
9844         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9845         using SSE2 aware opcodes.
9846
9847         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9848         is enabled, this code path is only reachable if conversion ops are emmited after
9849         mono_method_to_ir.
9850
9851         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9852
9853         This optimization saves 6 bytes per conversion against the old version.
9854
9855 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9856
9857         * aot-compiler.c (compile_method): Don't skip methods referencing 
9858         generic methods without a corresponding entry in token_info_hash, since
9859         encode_method_ref () can handle all generic methods now.
9860
9861         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9862         generic context is set.
9863         
9864         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9865         generic sharing of LDTOKEN.
9866
9867 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9868
9869         * mini-amd64.h: Temporarily disabled fast virtual generic method
9870         calls because it breaks the System.Runtime.Remoting tests.
9871
9872 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9873
9874         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9875
9876         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9877         so inlining actually works.
9878         (check_inline_caller_method_name_limit): Ditto.
9879
9880 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9881
9882         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9883         64 bit safety (from Olaf Hering and Andreas Farber).
9884
9885 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9886         
9887         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9888         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9889         unused virtual call support code.
9890
9891         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9892         
9893         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9894         which can't use aot trampolines.
9895         (decode_patch): Don't create aot trampolines for methods which can't use
9896         them.
9897
9898         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9899         use aot trampolines.
9900
9901         * mini.h: Bump AOT image format version.
9902         
9903 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9904
9905         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9906         to save_token_info () since cmethod is inflated for constrained calls.
9907
9908         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9909
9910 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9911
9912         * Makefile.am: Add build rules for ppc64.
9913         This avoids the build failing at pedump with unresolved symbols
9914         due to lack of arch_sources. Instead it will now fail earlier
9915         due to lack of cpu-ppc64.md.
9916
9917         Contributed under MIT/X11 license.
9918
9919 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9920
9921         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9922         tail calls.
9923
9924         * iltests.il.in: Add test case for tail call with many arguments.
9925
9926 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9927
9928         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9929         to the fast virtual generic method code until the aot case is fixed.
9930
9931 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9932
9933         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9934
9935 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9936
9937         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9938         thunks.
9939
9940 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9941         
9942         * simd-intrinsics.c: Forgot to add this one.
9943
9944         * mini-codegen.c: Fix macro in case SIMD is not supported.
9945
9946 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9947         
9948         This patch land initial JIT support for simd intrinsics.
9949
9950         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9951
9952         * Makefile.am: Added simd-intrinsics.c
9953
9954         * simd-intrinsics.c: New file with simd instrinsic related
9955         code.
9956
9957         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9958
9959         * cpu-x86.md: Add simd related instructions.
9960
9961         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9962
9963         * driver.c: Added two new --regression variants.
9964
9965         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9966
9967         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9968
9969         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9970         extract some complicated logic to helper functions.
9971
9972         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9973
9974         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9975
9976         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9977         the specialized simplification pass.
9978
9979         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9980
9981         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9982
9983         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9984         table.
9985
9986         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9987         if MONO_ARCH_NEED_SIMD_BANK is defined.
9988
9989         * mini-ops.h: Added the new simd ops.
9990
9991         * mini-x86.c: Added mono_arch_xregname.
9992
9993         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9994
9995         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9996
9997         * mini-x86.h: Define simd related MONO_ARCH macros.
9998
9999         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10000
10001         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10002
10003         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10004         MONO_CLASS_IS_SIMD to deal with simd related IR.
10005
10006         * mini.h (MonoInst): Added spill_var to the backend union.
10007
10008         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10009
10010         * mini.h: Added forward declarations of the new simd fuctions.
10011
10012         * optflags-def.h: Added new optimization names SIMD.
10013
10014         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10015
10016         * regalloc.h: Added support for working with 3 register banks.
10017
10018         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10019
10020         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10021
10022 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10023
10024         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10025
10026 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10027
10028         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10029         instead of one on 64 bit systems.
10030
10031         * method-to-ir.c: Remove unused includes.
10032
10033 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10034
10035         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10036         cfg->used_int_regs, since the two are different on arm.
10037
10038 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10039
10040         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10041         mono_method_get_vtable_index() to get the vtable index.
10042
10043 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10044
10045         * method-to-ir.c (mono_method_to_ir2): Don't create native
10046         wrappers for array methods, because they're never called (and if
10047         they were called they wouldn't work).
10048
10049 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10050
10051         * method-to-ir.c (mono_method_to_ir2): Array methods are
10052         special-cased and must not be invoked indirectly via the (M)RGCTX
10053         when generic sharing is turned on.  Fixes #431413.
10054
10055 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10056
10057         * method-to-ir.c: When generic sharing is active, call
10058         non-interface virtual generic methods via the standard trampoline.
10059
10060         * mini-trampolines.c: Handle virtual generic shared methods.
10061
10062         * mini.h, mini-x86.c, mini-x86.h: New argument for
10063         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10064         method thunks and which is the trampoline to call if the lookup
10065         fails.  Enable the virtual generic method thunk for x86.
10066
10067         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10068         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10069         argument but assert that it's NULL, because these archs don't yet
10070         implement the virtual generic method thunk.  Changes in the IMT
10071         thunk data structures.
10072
10073 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10074
10075         * aot-compiler.c (emit_globals): Avoid invalid characters in
10076         the static linking symbol.
10077
10078         * objects.cs: Add a test for the range check optimization. Fix warnings.
10079
10080         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10081         optimization from the current JIT.
10082
10083         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10084         later in decompose_array_access_opts () to allow more optimizations.
10085
10086         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10087         mono_decompose_soft_float () for consistency.
10088
10089         * mini-ops.h: Fix arguments of OP_STRLEN.
10090
10091         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10092         into a separate function.
10093         (reset_cast_details): Ditto.
10094         (handle_unbox): Save cast details. Fixes #431254.
10095
10096         * method-to-ir.c: Remove some obsolete FIXMEs.
10097
10098 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10099
10100         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10101
10102 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10103
10104         * mini-codegen.c: More work on macros to make them
10105         ready for multiple regbanks.
10106
10107 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10108
10109         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10110
10111         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10112
10113 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10114
10115         * mini-codegen.c (mono_spillvar_offset): Proper support for
10116         multiple regbanks.
10117
10118 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10119
10120         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10121         the stack overflow changes.
10122
10123 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10124
10125         * mini-codegen.c: Make all bank macros depend on reg_bank.
10126
10127         * mini-codegen.c (mono_local_regalloc): Make free mask
10128         initialization regbank aware.
10129
10130 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10131
10132         * mini-codegen.c (mono_local_regalloc): Extract callee
10133         mask selection to a function and make it regbank aware.
10134
10135 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10136
10137         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10138         code to deal with many regbanks.
10139
10140 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10141
10142         * mini-codegen.c: More fp->regbank changes.
10143
10144 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10145
10146         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10147         of a hardcoded constant.
10148
10149 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10150
10151         * method-to-ir.c (type_from_stack_type): Fix typo.
10152
10153 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10154
10155         * mini-ia64.c (emit_move_return_value): Convert float return values to
10156         double.
10157
10158         * objects.cs: Add a new test.
10159         
10160         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10161         VARARG methods to fix an assert later.
10162
10163         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10164         end so it at least compiles.
10165
10166 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10167
10168         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10169
10170 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10171
10172         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10173         optimization to a new function (emit_optimized_ldloca_ir) and enable
10174         it for both ldloca and ldloca_s.
10175
10176 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10177
10178         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10179         gshared CASTCLASS code.
10180
10181         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10182         amd64, where the libc stack unwinder encounters stack frames referring to
10183         native code in unmapped memory.
10184
10185         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10186         sharing.
10187
10188         * generics.cs: Add new test.
10189
10190 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10191
10192         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10193         add a check that one of the ARM_FPU_ constants is defined.
10194
10195         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10196         
10197         * mini-exceptions.c: Fix build on non-altstack platforms.
10198
10199         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10200         sharing of vtypes.
10201
10202         * ir-emit.h: Add a comment to NEW_PCONST.
10203
10204         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10205
10206         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10207
10208         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10209         after the changes to MonoJitDomainInfo.
10210
10211 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10212
10213         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10214
10215 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10216
10217         * mini-ppc.c: Compiler warning fixes.
10218
10219 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10220
10221         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10222         for pinvokes.
10223
10224 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10225
10226         * exceptions-ppc.c, mini-ppc.h: Compile
10227         mono_arch_handle_altstack_exception() on Darwin, too.
10228
10229 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10230
10231         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10232         work on archs which don't have generic sharing implemented, only
10233         without the vtable_arg.
10234
10235 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10236
10237         * mini.c: Added comment explaining why delegate ctor icall
10238         wrappers are compiled.
10239
10240 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10241
10242         * mini.c: Don't produce trampolines to delegate ctor icall
10243         wrappers but compile them upfront.
10244
10245 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10246
10247         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10248         runtime-set function when going back to managed code. Currently this
10249         is used to set back the protection on the soft ovf pages and/or to
10250         throw the stack overflow exception that happened in unmanaged code.
10251
10252 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10253
10254         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10255         runtime-set function when going back to managed code. Currently this
10256         is used to set back the protection on the soft ovf pages and/or to
10257         throw the stack overflow exception that happened in unmanaged code.
10258
10259 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10260
10261         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10262         the support code for restoring stack protection after stack overflows
10263         that happen in unmanaged code. Don't set the exec permission on the
10264         soft overflow area.
10265
10266 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10267
10268         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10269         delegate->method_ptr is set. Fixes #428054.
10270
10271 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10272
10273         * tests.cs: Rename to ratests.cs.
10274
10275         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10276         emit_get_rgctx_... functions.
10277
10278 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10279
10280         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10281
10282 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10283
10284         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10285         before asserting that method is sharable.
10286
10287 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10288
10289         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10290         whether method needs a static RGCTX wrapper used instead of
10291         complex conditions.
10292
10293         * generic-sharing.c, mini.h: A few functions moved to
10294         metadata/generic-sharing.c.
10295
10296 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10297
10298         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10299         Generic code sharing for value types, which essentially means
10300         treating value type methods like static methods.  The RGCTX is
10301         passed in the same way.
10302
10303 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10306         opcode when creating multi-dimensional arrays of open types.
10307
10308         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10309         open generic types.
10310
10311         * generics.cs: Add a test.
10312
10313         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10314
10315 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10316
10317         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10318
10319         * mini.c (mini_method_compile): Set it when running under the debugger. 
10320
10321         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10322         vreg optimization if the flag is set.
10323
10324         * driver.c (mono_main): Add --attach= option to pass options to
10325         the attach agent.
10326
10327         * mini.c (sigquit_signal_handler): Start the attach agent.
10328
10329         * ssapre.c: Disable this to save space since it is not yet ported to
10330         linear IR.
10331
10332         * regalloc2.c: Disable this to save space.
10333
10334         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10335
10336 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10337
10338         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10339         the -v option useful again.
10340
10341 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10342
10343         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10344         --break-at-bb.
10345
10346         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10347         arrays of arrays. Fixes #428406.
10348
10349         * method-to-ir.c (mini_emit_castclass): Ditto.
10350
10351         * objects.cs: Add new test.
10352         
10353 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10354
10355         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10356         was wrong at it choked against target_type_is_incompatible for byref types.
10357
10358 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10361         places.
10362
10363 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10364
10365         * mini-exceptions.c: update a few more exceptions-related counters.
10366
10367 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10368
10369         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10370         new functions to allocate from persistent mempools.
10371
10372 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10373
10374         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10375         multiple register banks in the future.
10376
10377         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10378
10379 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10380
10381         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10382
10383         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10384
10385         * mini.h: Export type_to_eval_stack_type.
10386
10387         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10388         is only ins->klass of byref types.
10389
10390 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10391
10392         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10393         (mini_emit_memcpy2): Ditto.
10394
10395         * mini-amd64.c: Fix a warning.
10396
10397 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10398
10399         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10400         linking.
10401
10402 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10403
10404         * method-to-ir.c: Extract stloc micro-optimization to a
10405         function and apply it to all cases.
10406
10407 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10408
10409         * method-to-ir.c: Don't fail generic code sharing in cases we
10410         already support.
10411
10412 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10413
10414         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10415
10416 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10417
10418         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10419         implementation.
10420
10421 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10422
10423         * trace.c: make tracing more useful and correct, with per-thread
10424         id and indent info.
10425
10426 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10427
10428         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10429         doing a method call and the argument is an R4.
10430
10431 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10432
10433         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10434         generic methods.
10435
10436 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10437
10438         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10439
10440 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10441
10442         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10443         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10444
10445 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10446
10447         * driver.c: Add a --agent argument (not supported yet) to load managed
10448         agent assemblies before loading the main assembly, similarly to how the
10449         Java VM handles agents.
10450
10451 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10452
10453         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10454         function to do stack layout of local variables.
10455
10456 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10457
10458         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10459         calculation.
10460
10461 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10464         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10465         JIT if DISABLE_JIT is defined.
10466
10467         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10468         defined.
10469
10470 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10471
10472         * iltests.il.in: Disable the fconv test on PPC (the result is
10473         undefined according to ECMA).
10474
10475 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10476
10477         * iltests.il.in: Enable tail call tests for PPC.
10478
10479         * mini.h: Add variable for storing incoming valuetype argument
10480         addresses for tail calls.
10481
10482         * mini-ppc.c: Implement valuetype arguments and return values for
10483         tailcalls on Linux.
10484
10485 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10486
10487         * mini-ppc.c: Partially implement tail calls (struct arguments and
10488         return values not supported).
10489
10490         * method-to-ir.c: Enable tail calls on PPC.
10491
10492 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10495         runtime-invoke wrappers to work around the problem of them getting
10496         assigned to a random class.
10497
10498         * aot-runtime.c (mono_aot_get_method): Ditto.
10499         
10500 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10501
10502         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10503         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10504
10505 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10506
10507         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10508         until they're implemented properly.
10509
10510         * exceptions-ppc.c: Use arch-independent exception-handling code
10511         instead of custom one.
10512
10513         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10514         for Linear IR.
10515
10516         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10517
10518         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10519         applies when __powerpc__ is defined.
10520
10521 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10522
10523         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10524         methods to their code to avoid computing the full name of wrappers and
10525         doing a lookup in a string hash table.
10526
10527 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10528
10529         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10530         we identify bblocks before method_to_ir () is ran.
10531
10532         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10533         Also avoid optimizing branches pointing to themselves.
10534
10535         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10536
10537 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10538
10539         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10540
10541 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10542
10543         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10544         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10545         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10546         'buf'.
10547
10548         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10549         jumped to the same entry in plt_jump_table.
10550
10551 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10552
10553         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10554         dynamic images.
10555
10556 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10557
10558         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10559         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10560         #421807.
10561
10562 2008-08-29  Geoff Norton  <gnorton@novell.com>
10563
10564         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10565         segment, and doesn't properly handle .space as .text.  Fixes
10566         AOT Mach/ARM
10567
10568 2008-08-29  Geoff Norton  <gnorton@novell.com>
10569
10570         * mini.c: Disable the mach exception handler when running on 
10571         ARM
10572
10573 2008-08-29  Geoff Norton  <gnorton@novell.com>
10574
10575         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10576         globals on Darwin/ARM
10577
10578 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10579
10580         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10581         since too many things depend on it. Instead, call 
10582         mono_runtime_set_no_exec ().
10583         
10584         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10585         the new JIT.
10586
10587         * aot-compiler.c: Add an 'asm-only' AOT option.
10588
10589         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10590                 
10591         * aot-compiler.c (compile_method): Disable gshared support for now as it
10592         doesn't yet work.
10593
10594 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10595
10596         * mini-amd64.h : Fix a compiler warning.
10597
10598         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10599           Changed to use a callback function to retrieve the unwind info.
10600           This avoids problems observed when code blocks were removed by
10601           unloading an app domain.
10602
10603         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10604           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10605           to work properly.
10606
10607         Contributed under MIT/X11 license.
10608
10609 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10610
10611         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10612           case to keep the stack aligned to 8.
10613
10614         Contributed under MIT/X11 license.
10615
10616 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10617
10618         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10619         avoid repeated linear searches.
10620
10621 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10622
10623         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10624         methods it can't handle.
10625         
10626         * aot-compiler.c (add_method): Avoid adding a method twice.
10627         (add_wrappers): Add runtime invoke wrappers for all methods.
10628
10629         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10630         function to create an aot-compatible version of this trampoline.
10631
10632         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10633
10634 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10635
10636         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10637
10638         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10639         with a generic sharing failure.
10640
10641         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10642
10643         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10644         CEE_RETHROW. Fixes #419634.
10645
10646         * mini.c (mono_method_to_ir): Ditto.
10647
10648         * exceptions.cs: Add a new test.
10649         
10650         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10651         to mono_type_stack_size_internal () since some callers might not pass in
10652         an rgctx.
10653
10654         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10655         instrument_prolog. Fixes #419878.
10656
10657         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10658         doubles in soft float mode volatile.
10659
10660 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10661
10662         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10663
10664         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10665         to handle soft float correctly.
10666
10667         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10668         the fast path.
10669
10670         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10671
10672         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10673         to sp, since the generics catch code requires it.
10674
10675         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10676         copying.
10677
10678         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10679         mono_arch_emit_imt_argument ().
10680
10681         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10682
10683         * mini-arm.c tramp-arm.c: Generic sharing updates.
10684
10685 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10686
10687         * mini-arm.c: Fix the arm build.
10688
10689         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10690         handling enums, generic instances and generic sharing.
10691         (mini_type_stack_size_full): Ditto.
10692
10693         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10694         
10695         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10696
10697         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10698
10699         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10700         trampolines.
10701
10702         * mini-arm.c: Various small generic sharing changes.
10703
10704         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10705         this for x86.
10706         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10707         custom code.
10708
10709         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10710         helper function to return a generic class init trampoline.
10711
10712         * method-to-ir.c mini.c: Use it.
10713         
10714         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10715         arch-specfic function to return a generic class init trampoline.
10716
10717         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10718         the GENERIC_CLASS_INIT custom code.
10719
10720         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10721         a fatal error, not a sharing failure.
10722
10723         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10724         needed.
10725
10726         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10727         trampoline argument from MONO_ARCH_VTABLE_REG.
10728
10729         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10730         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10731         argument, and pass the vtable in VTABLE_REG.
10732
10733         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10734         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10735         argument, and pass the vtable in VTABLE_REG.
10736         (mono_arch_create_trampoline_code_full): Remove some special casing for
10737         the rgctx fetch trampoline.
10738
10739         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10740         Fixes #419273.
10741
10742         * iltests.il: Add a test for it.
10743
10744 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10745
10746         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10747
10748         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10749         no longer needed.
10750
10751         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10752         use mono_jit_info_table_find () to avoid recursion.
10753         (mono_delegate_trampoline): Add a sync wrapper here.
10754
10755         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10756         here.
10757
10758         * mini.c (mono_method_to_ir): Ditto.
10759         
10760         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10761         add_sync_wrapper argument. Don't add a sync wrapper here.
10762         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10763
10764         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10765         
10766 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10767
10768         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10769           of nonvolatile registers back from MonoContext to CONTEXT.
10770
10771         Contributed under MIT/X11 license.
10772
10773 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10774
10775         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10776           arguments on Winx64 there are only 4 argument registers.  For this
10777           logic to work the last argument must be pulled from the stack.  
10778
10779         Contributed under MIT/X11 license.
10780
10781 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10782
10783         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10784
10785         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10786         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10787         encode/decode_method_ref ().
10788
10789         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10790
10791         * aot-runtime.c (decode_patch): Ditto.  
10792
10793         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10794         MONO_PATCH_INFO_METHOD.
10795
10796         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10797         MonoGenericJitInfo.
10798
10799         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10800         MonoGenericJitInfo.
10801
10802         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10803
10804         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10805         one from the caller.
10806
10807         * aot-runtime.c (decode_generic_inst): New function to decode and
10808         return a interned generic inst.
10809         (decode_klass_ref): Use it.
10810         (decode_method_ref): Ditto.
10811
10812         * aot-compiler.c (emit_exception_debug_info): Save 
10813         jinfo->has_generic_jit_info too.
10814
10815 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10816
10817         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10818
10819         * iltests.il.in: Add a test for fconv_to_i.
10820
10821         * liveness.c: Disable the liveness2 pass for now to save space.
10822
10823         * regalloc2.c: Include mempool-internals.h to fix warnings.
10824
10825         * aot-compiler.c (encode_method_ref): Encode the context of generic
10826         instance methods.
10827
10828         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10829         the context saved in the aot file.
10830
10831         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10832
10833         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10834
10835         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10836         volatile so they won't be optimized away.
10837
10838 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10839
10840         * ssa.c:
10841         * ssa2.c:
10842         * mini.c:
10843         * regalloc2.c:
10844         * dominators.c: Remove duplicated functions that now are in
10845         mempool-internals.h.
10846
10847 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10848
10849         * aot-compiler.c: Fix warnings.
10850
10851         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10852
10853         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10854
10855         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10856         as the patch type.
10857
10858         * mini.c (mono_resolve_patch_target): Ditto.
10859         
10860         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10861         (encode_klass_ref): Add support for encoding VARs/MVARs.
10862
10863         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10864
10865         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10866         the handling of the got entries into a separate 'decode_got_entry' function.
10867         Add support for RGCTX_FETCH.
10868
10869         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10870         clobbered by the trampoline code.
10871
10872         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10873         not clobbered by the indirect calling code.
10874
10875 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10878         to fix the build.
10879
10880 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10881
10882         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10883         signature using the compilation mempool otherwise we would leak it.
10884
10885 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10888         mono_emit_abs_call ().
10889
10890         * patch-info.h: Add GENERIC_CLASS_INIT.
10891
10892         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10893
10894         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10895         as their target as a near call.
10896
10897         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10898         ABS handling code.
10899         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10900
10901         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10902         call to a runtime function described by a patch.
10903
10904         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10905         mono_emit_abs_call, this has the advantage that the ABS handling code in
10906         mono_codegen () can handle them both, and can handle other stuff in the
10907         future without additional code.
10908
10909         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10910         entry.
10911         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10912         abs addresses.
10913
10914         * mini.h: Add missing bblock related prototypes.
10915
10916         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10917         reverse_inst_list_len fields.
10918
10919         * mini.c: Refactor this file a bit by moving branch optimizations to 
10920         branch-opts.c.
10921
10922         * method-to-ir.c: Merge generic sharing changes missed earlier.
10923
10924         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10925
10926         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10927         shared patches. Process METHODCONST as a shared patch.
10928
10929         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10930         as it crashes on the 2.0 mscorlib.
10931
10932         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10933         to cause crashes.
10934         
10935         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10936         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10937         by IMT.
10938
10939         * aot-compiler.c: Reorganize the got handling code to be a bit more
10940         understandable.
10941
10942 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10943
10944         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10945         mono_patch_info_equals/hash, and use it to massively simplify
10946         get_plt_index ().
10947
10948         * mini.c (mono_patch_info_hash): Simplify this and add support for
10949         more patch types.
10950
10951         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10952
10953         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10954         handling code, since an offset is not enough to identify a trampoline.
10955
10956         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10957
10958 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10959
10960         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10961
10962         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10963
10964         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10965
10966         * decompose.c: PPC decompositions for various ops.
10967
10968         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10969
10970 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10971
10972         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10973         call the generic trampoline code using a call, instead of a jump, to
10974         remove some special casing from the generic trampoline code.
10975
10976         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10977         (mono_codegen): Ditto.
10978
10979         * aot-compiler.c aot-runtime.c: Ditto.
10980
10981         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10982
10983         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10984         helper function to find the offset corresponding to a lazy fetch trampoline.
10985
10986         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10987         when doing generic sharing.
10988
10989         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10990         places.
10991         
10992         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10993         mini-trampolines.c to be with the other trampoline creation functions.
10994
10995         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10996         as it is equal to method->signature in most cases, add a 
10997         mono_emit_method_call_full variant which takes a signature and an imt
10998         argument as well.
10999
11000 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11001
11002         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11003         to this function, since it could be computed easily from the method 
11004         argument.
11005         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11006         more.
11007
11008         * method-to-ir.c mini.c: Remove references to 
11009         compile_generic_method_wo_context.
11010
11011         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11012         generic method calls.
11013         
11014         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11015         dimensional non-szarrays.
11016
11017         * mini.c (mini_init): Register mono_array_new_1.
11018
11019         * jit-icalls.c (mono_array_new_1): New jit icall.
11020
11021         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11022         pointing to the method.
11023
11024         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11025         method addresses belonging to METHOD_JUMP patches in the 
11026         jump_target_got_slot_hash.
11027         (mono_aot_load_method): Ditto.
11028
11029         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11030         METHOD_JUMP patches.
11031
11032         * mini.c (mini_create_jit_domain_info): New helper function which 
11033         initializes/frees domain->runtime_info.
11034         (mini_free_jit_domain_info): Ditto.
11035         (mini_init): Install the domain hook functions with the runtime.
11036
11037         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11038         information maintained by the JIT.
11039
11040         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11041         insertion into jump_table_hash into mono_codegen (), also implement proper
11042         locking.
11043
11044         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11045         tail calls, it is already done by the aot code.
11046         
11047         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11048         mechanism on amd64.
11049
11050         * iltests.il.in: Make the jmp test a bit more complex.
11051
11052         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11053         generic instances which doesn't have a token.
11054
11055         * aot-runtime.c (decode_method_ref): Ditto.
11056         
11057         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11058         can handle this case now.
11059         (handle_box): Ditto.
11060
11061 2008-08-15  Geoff Norton  <gnorton@novell.com>
11062
11063         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11064         debugging check.
11065
11066 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11067
11068         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11069         calling generic methods.
11070
11071         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11072
11073         * aot-runtime.c (decode_patch_info): Ditto.
11074
11075         * mini.c (mono_resolve_patch_target): Ditto.
11076         
11077         * patch-info.h: Add METHOD_RGCTX.
11078
11079         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11080
11081 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11082
11083         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11084         arguments in registers.
11085
11086         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11087         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11088
11089         * mini.c (mini_method_compile): Abort aot compilation for generic
11090         methods if generic sharing is disabled.
11091         
11092         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11093         an mrgctx.
11094
11095         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11096         requiring an mrgctx.
11097
11098         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11099         store instructions when converting a vcall to a normal call.
11100
11101         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11102         mono_arch_find_jit_info.
11103
11104 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11105
11106         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11107         avoid calling mono_method_full_name () for every method even if the
11108         env var is not set.
11109         (check_inline_caller_method_name_limit): Ditto.
11110
11111 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11112
11113         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11114         assemblies in one run.
11115
11116         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11117         skipped methods if it is not 0.
11118
11119         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11120
11121 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11122
11123         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11124           MONO_ARCH_HAVE_UNWIND_TABLE.
11125
11126         Contributed under MIT/X11 license.
11127
11128 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11129
11130         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11131           from default optimizaton list on Winx64.
11132
11133         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11134
11135         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11136           the LMF from the MonoJitTlsData structure.
11137
11138         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11139
11140         Contributed under MIT/X11 license.
11141
11142 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * mini.c (sigsegv_signal_handler): Fix the build.
11145
11146         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11147         assembly->aot_module.
11148
11149         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11150         hash table. This simplifies and speeds up a lot of code, and fixes support
11151         for .netmodules.
11152
11153         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11154         with the runtime.
11155
11156         * mini-exceptions.c: Ditto.
11157         
11158         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11159         'native_offset' argument, since these are computed in the 
11160         mono_find_jit_info () function.
11161
11162         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11163         is used by exceptions-ppc.c.
11164
11165         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11166         mono_arch_find_jit_info ().
11167         
11168         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11169         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11170         generic code in mini-exceptions.c.
11171
11172 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11175
11176         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11177         
11178         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11179         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11180         called while holding the loader lock. Fixes #415608.
11181         (mono_aot_get_method_from_token_inner): Ditto.
11182
11183 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11186         to reduce differences between this and the generic implementation in
11187         mini-exceptions.c.
11188         (ves_icall_get_frame_info): Ditto.
11189
11190         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11191
11192         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11193         longer neccesarry.
11194
11195         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11196         mono_arch_get_call_filter () and make it non-static, for consistency with the
11197         other architectures.
11198
11199 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11200
11201         * mini.c:
11202         * local-propagation.c:
11203         * mini-x86.c: Correct the name of arch defines.
11204
11205 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11206
11207         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11208         NO_EMULATE_LONG_SHIFT_OPS define.
11209
11210 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11211
11212         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11213         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11214
11215         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11216         MACH fixes. Merged from the 2.0 branch.
11217
11218         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11219
11220         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11221         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11222
11223         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11224
11225         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11226         mono_marshal_get_native_wrapper () signature changes.
11227
11228 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11229
11230         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11231         conversion bug under arm.
11232
11233 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11234
11235         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11236
11237         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11238         with overflow checking.
11239
11240 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11241
11242         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11243         to the genmdesc.pl file
11244
11245 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11246
11247         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11248         arg_array in the soft-float versions of the LOAD/STORE macros.
11249
11250         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11251         implementation.
11252
11253         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11254
11255 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11256
11257         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11258         a float HFA. Fixes #413621.
11259
11260 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11261
11262         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11263         frame_size to args_size. Fixes build.
11264
11265 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11266
11267         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11268         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11269
11270         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11271         the stack are not unaligned. Fixes #413247.
11272         
11273 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11274
11275         * mini.c: update jitted methods performance counters.
11276
11277 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11278
11279         * mini-exceptions.c: increase the exceptions thrown performance
11280         counter in mono_handle_exception ().
11281
11282 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11283
11284         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11285         can work with netmodules.
11286
11287 2008-07-28  Geoff Norton  <gnorton@novell.com>
11288
11289         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11290         regression tests.
11291
11292 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11293
11294         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11295         correct place.
11296
11297 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11298
11299         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11300           The float param registers and other param registers must be the 
11301           same index on Windows x64.
11302
11303         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11304           ArgValuetypeAddrInIReg argument case.  Setting the argument
11305           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11306
11307         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11308           variable computed above as the copy length for arguments of storage
11309           type ArgValuetypeAddrInIReg.
11310
11311         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11312           ArgValuetypeAddrInIReg argument case.  This case will rely on
11313           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11314
11315         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11316           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11317           jump and tail call instructoins as they do not follow the typical call behavior.
11318
11319         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11320           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11321           local variable and pass the local variable by reference to the called method.
11322
11323         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11324           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11325           of a struct is passed in a register it must be saved with the other
11326           volatile argument on the stack.
11327
11328         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11329           frame pointer the stack adjustment value must be saved to the unwind 
11330           info structure.
11331
11332         Contributed under MIT/X11 license.
11333
11334 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11335
11336         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11337         which got lost in the merge.
11338
11339 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11340
11341         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11342         build.
11343
11344         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11345         
11346         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11347         icalls, since they won't be patched.
11348
11349         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11350         different code sequence when running under valgrind to prevent some valgrind
11351         errors.
11352
11353         * iltests.il.in: Add new regression test.
11354
11355         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11356         end with a throw.
11357
11358         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11359         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11360
11361         * iltests.il.in: Add new test.
11362
11363         * aot-compiler.c: Fix some warnings.
11364
11365         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11366         Fixes #412494.
11367
11368 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11369
11370         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11371         (mini_usage_jitdeveloper): Add a missing --wapi option.
11372
11373 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11374
11375         * mini-codegen.c: Simplify the is_fp macros.
11376         (free_up_ireg): Remove, use free_up_reg instead.
11377         (free_up_reg): Fix the fp case.
11378
11379 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11380
11381         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11382         lowered earlier.
11383
11384         * exceptions-x86.c: Merge some changes which seemed to have got lost
11385         in the linear-ir merge.
11386
11387         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11388
11389         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11390         long vreg volatile even if the variable was already created.
11391
11392         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11393         volatile variables.
11394
11395 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11396
11397         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11398
11399         * mini.c (mono_jit_compile_method_inner): Add support for 
11400         MONO_EXCEPTION_BAD_IMAGE.
11401
11402         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11403         mini_method_get_context () returns NULL. Fixes #356531.
11404
11405         * mini.c (mono_method_to_ir): Ditto.
11406         
11407         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11408         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11409
11410 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11411
11412         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11413         in the LDFTN implementation.
11414
11415 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11416
11417         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11418         code, patch calls to icalls, too, even if they're not in the
11419         shared generic code hash.  Fixes #411962.
11420
11421 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11422
11423         * cpu-x86.md: Increase the length of the fcall opcodes.
11424
11425         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11426         calls returning floats.
11427
11428         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11429         on NEWARR.
11430         
11431         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11432         missed earlier.
11433
11434         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11435         into the domain->method_code_hash.
11436
11437         * aot-compiler.c: Fix win32 build.
11438
11439         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11440         
11441         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11442         gshared NEWARR implementation.
11443
11444         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11445
11446         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11447         can be used outside of method_to_ir.
11448
11449         * mini.h (MonoCompile): Add arg_types field.
11450
11451         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11452         
11453         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11454         the values of the local arg_array and param_types array.
11455
11456 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11457
11458         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11459         got accesses might only get generated later when NEWOBJ is decomposed.
11460         
11461         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11462         looking up the native code of the target method when a delegate is called
11463         for the first time.
11464
11465         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11466         optimization.
11467
11468         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11469
11470         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11471         AOT work on platforms without a working dlsym implementation.
11472
11473         * mini.h: Bump AOT image format version.
11474         
11475 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11476
11477         * mini-exceptions.c: Free a MonoType with
11478         mono_metadata_free_type() instead of g_free().
11479
11480         * aot-runtime.c: Free a MonoType.
11481
11482 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11483
11484         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11485         optimization.
11486
11487         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11488         fp stack on x86.
11489
11490 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11491         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11492         profiler hook.
11493
11494 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11495
11496         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11497         NEWOBJ calls on valuetypes.
11498
11499         * iltests.il.in: Add new test.
11500
11501         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11502
11503 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11504
11505         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11506         is no longer needed.
11507
11508         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11509         non register sized integer arguments.
11510         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11511         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11512         emit_memcpy2 ().
11513
11514         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11515         CEE_MONO_RETOBJ.
11516         
11517         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11518         two a binop with different sized arguments is emitted.
11519
11520         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11521         instruction in the ins==NULL case.
11522
11523 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11524
11525         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11526
11527         * mini-x86.c: Fix osx build.
11528
11529         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11530         opcodes as well.
11531
11532         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11533         instruction for non int sized variables.
11534
11535         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11536         implementation.
11537
11538 2008-07-23  Robert Jordan  <robertj@gmx.net>
11539
11540         * method-to-ir.c: Fix MSVC build.
11541
11542 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11543
11544         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11545         a non int sized type, widen it to an int since newer versions of gcc seem to
11546         generate code which needs this.
11547
11548         * ssa2.c abcremoval2.c: Fix warnings.
11549
11550         * *: Merge the Linear IR branch.
11551
11552         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11553         the ChangeLog file there describes all the changes done over the years. 
11554         Further documentation can be found at www.mono-project.com/Linear_IL.
11555
11556 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11557
11558         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11559           The float param registers and other param registers must be the 
11560           same index on Windows x64.
11561
11562         Contributed under MIT/X11 license.
11563
11564 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11565
11566         * mini.c: Make the previous fix GC safe.
11567
11568 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11569
11570         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11571
11572 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11573
11574         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11575           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11576           ArgValuetypeAddrInIReg instead.
11577
11578         Contributed under MIT/X11 license.
11579
11580 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11581
11582         * mini-codegen.c (get_register_spilling): Fix a warning.
11583
11584 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11585
11586         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11587         for types which the initialization fails. Raises the provided exception
11588         at the right stop after cleanup.
11589
11590 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11591
11592         * aot-compiler.c: Free most of the memory allocated during compilation.
11593
11594         * mini.c (mini_parse_debug_options): Fix a leak.
11595         
11596         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11597         during aot compilation.
11598
11599 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11600
11601         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11602         it has too much register pressure.
11603
11604 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11605
11606         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11607
11608 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11609
11610         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11611         on x86.
11612
11613         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11614         on amd64 similar to the way it is done on arm.
11615
11616         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11617
11618         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11619         consistency, normalize error messages, avoid loading aot-only modules in
11620         normal mode.
11621
11622         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11623         for consistency.
11624
11625         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11626
11627 2008-07-11  Martin Baulig  <martin@ximian.com>
11628
11629         * debug-debugger.h
11630         (MonoDebuggerInfo): Add `interruption_request'.
11631
11632 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * aot-compiler.c (emit_plt): Remove some dead code.
11635
11636         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11637
11638         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11639         return the plt info offset belonging to a given plt entry.
11640
11641         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11642         mono_aot_get_plt_info_offset.
11643         
11644         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11645         similar to the amd64 code by makeing jumps through a separate jump table 
11646         instead of embedding the jump addresses into the code.
11647
11648 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11649
11650         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11651         method.
11652
11653 2008-07-10  Martin Baulig  <martin@ximian.com>
11654
11655         * mini.c (mini_method_compile): Disable generics sharing when
11656         running in the debugger.
11657
11658 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11659
11660         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11661
11662         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11663         the local register allocator from running out of registers on x86 when 
11664         using aot.
11665
11666 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11667
11668         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11669         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11670         C4146.
11671
11672         Contributed under MIT/X11 license.
11673
11674 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11675
11676         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11677         speed up the assembler.
11678
11679 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11680
11681         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11682         support.
11683
11684         * mini.c: Move the soft float handling macros a bit earlier, add 
11685         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11686         place.
11687
11688         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11689
11690         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11691         read-only to help catch code allocation requests.
11692         
11693         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11694         and turn it off when using --aot-only or when compiling with --aot=full.
11695
11696         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11697         jump table for switches from the normal domain mempool, not the code
11698         manager.
11699
11700         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11701         unbox trampoline which handles aot-only mode too.
11702
11703         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11704         an AOTed unbox trampoline.
11705
11706         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11707
11708 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11709
11710         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11711         ""
11712
11713         Contributed under MIT/X11 license.
11714
11715 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11716
11717         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11718           the unwind information for the method at the end of the allocated block.
11719           
11720         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11721           MonoCompileArch to hold the unwind info for SEH on Winx64
11722         
11723         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11724           frame pointer info for the method being compiled.
11725           
11726         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11727           the call to mono_exception_from_token.
11728           
11729         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11730           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11731           information is stored a the end of the method block because it is all 32-bit offset based.
11732
11733         Contributed under MIT/X11 license.
11734
11735 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11736
11737         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11738
11739         * wapihandles.c: Fix warnings.
11740
11741         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11742         mode.
11743
11744         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11745         mono_jit_compile_method in aot-only mode since that calls the type 
11746         initializer.
11747         
11748         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11749         get_delegate_invoke_impl in aot-only mode.
11750
11751         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11752
11753 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11754
11755         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11756
11757         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11758         is on by default.
11759
11760         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11761
11762         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11763         init trampoline from the AOT file as well.
11764
11765         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11766         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11767         code.
11768
11769         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11770         mono_init.
11771
11772         * exceptions-amd64.c: Add _full variants for the remaining exception code
11773         creation functions as well, allow emission of relocatable code, remove
11774         caching since that is now done by the caller.
11775
11776         * mini-exceptions.c: Add _full variants for the remaining exception code
11777         creation functions as well, add aot-only support.
11778
11779         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11780         if we can determine a proper token for them.
11781         (add_wrappers): Add a few more wrappers.
11782         (emit_method_code): Remove some dead code.
11783         (emit_trampolines): Emit exception code too.
11784
11785         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11786
11787         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11788         mono_array_new_va which avoids varargs.
11789
11790         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11791
11792         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11793         mono_arch_create_specific_trampoline () in all places.
11794
11795         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11796         a bit so it can be used for other things as well.
11797         
11798         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11799         on demand as well.
11800
11801         * exceptions-amd64.c: Rename the caching from the exception code creation
11802         functions, it is done by the caller instead.
11803         
11804         * exceptions-amd64.c: Change the signature of the exception code creation 
11805         functions to allow the creation of relocatable code later.
11806
11807         * mini-exceptions.c: Add a set of functions to query the various 
11808         runtime-generated exception functions.
11809
11810         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11811         mono_arch_.. () functions.
11812         
11813 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11814
11815         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11816
11817         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11818
11819         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11820         (mini_get_vtable_trampoline): Ditto.
11821
11822         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11823         code in the AOT case by returning the code size and a list of relocations to
11824         the caller.
11825
11826         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11827
11828 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11829
11830         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11831           clean the stack.
11832
11833         Contributed under MIT/X11 license.
11834
11835 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11836
11837         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11838         so the buffer size can be computed correctly. Fixes #404735.
11839
11840         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11841         normally as cfg->debug_info is already freed.
11842
11843 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11844
11845         * mini-amd64.c: For calls returning vtypes in registers, don't store
11846         the return address on the stack, instead allocate a separate local for
11847         it. Fixes #404729.
11848
11849 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11850
11851         * mini-trampolines.c, mini.h: Add an argument to
11852         mono_create_jit_trampoline_in_domain() for turning off the adding
11853         of the sync wrapper.
11854
11855         * mini.c: Use the JIT trampoline without sync instead of
11856         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11857         be patched.
11858
11859 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11860
11861         * driver.c: Turn on GSHARED optimization by default.
11862
11863 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11864
11865         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11866         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11867
11868         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11869         create a variant of the generic trampoline code callable from AOTed trampolines.
11870
11871         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11872         trampoline code callable from AOTed trampolines.
11873
11874         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11875
11876 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11877
11878         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11879         pass-through manner.
11880
11881         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11882         and don't fail sharing for them anymore.
11883
11884         * mini-exceptions.c: Handle exceptions in shared generic methods.
11885
11886         * generic-sharing.c: When checking the context of a generic
11887         method, also check its class's context.  Don't treat wrappers as
11888         sharable.
11889
11890         * mini-trampolines.c: Some code factored out to
11891         metadata/generic-sharing.c.  Handle the MRGCTX case.
11892
11893         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11894         we must deal with the method being of another instantiation of the
11895         class.  Add static rgctx invoke wrappers to generic methods.
11896
11897 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11898
11899         * mini.c: Provide all jit infos of generic shared methods with a
11900         generic jit info.
11901
11902         * mini-exceptions.c: Handle the new situation that a generic info
11903         might be available, but not info about the this/vtable/mrgctx
11904         variable.
11905
11906 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11907
11908         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11909         generic methods.
11910
11911 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11912
11913         * dominators.c (check_dominance_frontier): Fix a warning.
11914
11915         * mini.h: Add some missing prototypes.
11916
11917         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11918
11919         * driver.c (mono_jit_init_version): Correct the comments since the first
11920         argument should be the name of the root domain, not a filename.
11921
11922         * aot-runtime.c (make_writable): Error out if this is called while running
11923         with --aot-only.
11924         (load_aot_module): Ditto.
11925
11926         * aot-compiler.c: Really fix the computation of method indexes.
11927
11928         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11929         optimizations as this is no longer called frequently.
11930
11931         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11932         method and the invoke impl code and pass it to the delegate trampoline instead of
11933         just the delegate class.
11934
11935 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11936
11937         * aot-compiler.c: Fixup the computation of method indexes.
11938         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11939         the method builder infrastructure.
11940
11941         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11942         has no header.
11943
11944         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11945         mode, load the method right away instead of creating a trampoline.
11946
11947         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11948
11949         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11950         some checks a bit.
11951
11952 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11953
11954         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11955         (mono_aot_load_method): Use method_index instead of method->token.
11956
11957         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11958         can handle icalls etc. properly.
11959
11960         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11961
11962         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11963
11964         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11965         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11966         JIT_ICALL_ADDR patch type.
11967
11968         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11969
11970         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11971         request flag.
11972         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11973
11974         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11975
11976 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11977
11978         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11979         domain->jit_code_hash.
11980
11981 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11982
11983         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11984
11985 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11986
11987         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11988         get_this_arg_from_call, let it compute it when needed.
11989
11990         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11991         gsctx from code only when needed.
11992
11993         * mini-trampolines.c (get_generic_context): Rename this to 
11994         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11995         it can be called by the arch backends.
11996
11997         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11998
11999 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12000
12001         * driver.c (mono_main): Add experimental --aot-only command line option.
12002
12003         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12004         set.
12005
12006 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12007
12008         * driver.c (DllMain): Remove mono_module_handle.
12009
12010         Contributed under MIT/X11 license.
12011
12012 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12013
12014         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12015         for emitting methods which are not in the source assembly. Detect and report
12016         failure of assembling+linking.
12017         
12018         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12019
12020         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12021
12022 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12023
12024         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12025
12026 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12027
12028         * mini.h: Remove some obsolete prototypes.
12029
12030         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12031
12032 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12033
12034         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12035         supported by Visual Studio, so use alloca().
12036
12037 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12040         Fixes #402585.
12041
12042 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12043
12044         * mini.c: Fail sharing of a generic method if it contains an open
12045         catch clause (because we don't pass MRGCTXs yet).
12046
12047 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12048
12049         * mini.c: When compiling a method with generic sharing, insert the
12050         method instantiated with an all-Object generic context into the
12051         jit info table, instead of the context of the first instantiation
12052         of the method we happen to compile.
12053
12054 2008-06-18  Martin Baulig  <martin@ximian.com>
12055
12056         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12057         `major_version' and `minor_version'.
12058
12059 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12060
12061         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12062         mono_method_is_generic_sharable_impl() takes an additional
12063         argument specifying whether to treat type variables as reference
12064         types.
12065
12066 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12067
12068         * mini.h: Removed obsolete prototypes.
12069
12070 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12071
12072         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12073         already handle them.
12074
12075 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12076
12077         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12078         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12079         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12080         tramp-x86.c: Added a MonoGenericContext* argument to
12081         mono_arch_get_unbox_trampoline() so that it can call other
12082         functions which require it.
12083
12084 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12085
12086         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12087         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12088         mono_arch_get_this_arg_from_call() takes a
12089         MonoGenericSharingContext* as well.
12090
12091 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12092
12093         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12094         implement generic sharing of unbox.
12095
12096 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12097
12098         * mini.c: Don't compute the vtable to determine whether a field is
12099         special static, because it might not work for open types.
12100
12101 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12102
12103         * mini.c: Removed the unused token_type and token_source arguments
12104         from get_runtime_generic_context_ptr().
12105
12106 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12107
12108         * mini.c (ADD_BINOP): fix the build
12109
12110 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12111
12112         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12113         a widening op.
12114
12115 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12116
12117         * mini.h: Removed class relations enum that's not used anymore.
12118
12119 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12120
12121         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12122
12123         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12124         the lazy fetch trampoline access code.
12125
12126 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12127
12128         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12129
12130 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12131
12132         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12133
12134         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12135
12136         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12137
12138 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12139
12140         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12141         intrinsics.
12142
12143         * mini-ops.h: Add MIN/MAX_UN opcodes.
12144
12145         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12146         intrinsics.
12147
12148         * basic-math.cs: Add more min/max tests.
12149
12150         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12151
12152 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12153
12154         * mini.c: Small fix in the prologue of emit_castclass.
12155
12156 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12159
12160         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12161         do not work even for unsigned types. Fixes #400014.
12162
12163         * basic-math.cs: Add regression tests for unsigned Min/Max.
12164
12165 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12166
12167         * mini.c: Added additional context_used argument to several
12168         functions, which will be needed for sharing generic methods.  Use
12169         GET_RGCTX macro wherever appropriate.  Declare only one
12170         context_used in mono_method_to_ir().
12171
12172 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12173
12174         * mini.c, generic-sharing.c: Removed generic class relations.
12175
12176         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12177         functions due to MRGCTX changes.
12178
12179 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12180
12181         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12182         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12183         with calculated IMT.
12184
12185         * mini.c: Generic sharing of calls via generic interfaces.
12186
12187         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12188         generic method with non-constant MonoGenericContext*.  Instead,
12189         the context is taken out of the method itself.
12190
12191 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12192
12193         * mini.c: Generic sharing of ldvirtftn.
12194
12195 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12196
12197         * mini.c: Generic sharing of ldftn.
12198
12199 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12200
12201         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12202
12203 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12204
12205         * mini.c: Generic sharing of the special case of ldtoken followed
12206         by a call to GetTypeFromHandle.
12207
12208 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12209
12210         * mini.c: Generic sharing of box for nullable types.
12211
12212 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12213
12214         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12215         are passed on the stack. Fixes #324807.
12216
12217 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12218
12219         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12220         for the ArgValuetypeAddrInIReg case.
12221
12222         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12223         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12224
12225         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12226         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12227         local variable and pass the local variable by reference to the called method.
12228           
12229         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12230         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12231
12232         Contributed under MIT/X11 license.
12233
12234 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12235
12236         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12237
12238         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12239         everything.
12240
12241 2008-06-10  Martin Baulig  <martin@ximian.com>
12242
12243         * debug-mini.c
12244         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12245
12246 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12247
12248         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12249         possible error when no arguments are passed.
12250
12251         Contributed under MIT/X11 license.
12252
12253 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12254
12255         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12256         where the file name is NULL.
12257
12258 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12259
12260         * mini.c: Fix s390 build.
12261
12262 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12263
12264         * trace.c (mono_trace_parse_options): Fix warnings.
12265
12266         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12267
12268 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12269
12270         * mini.c (remove_block_if_useless): Avoid printing the method name.
12271         
12272         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12273         MONO_INST_NEW.
12274
12275         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12276         LMF. Not yet used.
12277
12278         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12279         translated code after it has been patched.
12280
12281 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12282
12283         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12284         avoid problems during code patching on SMP systems.
12285         (emit_call): Avoid adding a patch info which is already added by 
12286         emit_call_body.
12287         (mono_arch_emit_exceptions): Ditto.
12288
12289 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12292         MONO_TYPE_ISSTRUCT already checks for it.
12293
12294 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12295
12296         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12297           structs with floats on Winx64 the float registers are not used.  
12298           The integer registers are always used..
12299         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12300           only one register will be used and only if the size of the struct 
12301           is 1,2,4, or 8 bytes.
12302
12303         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12304           to work for Winx64.
12305
12306         Contributed under MIT/X11 license.
12307
12308 2008-06-05  Martin Baulig  <martin@ximian.com>
12309
12310         * debug-debugger.c (debugger_lookup_class): Also call
12311         mono_class_setup_methods() here; we're only called from RTI.
12312
12313 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12314
12315         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12316         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12317         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12318         Post-process object files and add dtrace-generated object, if necessary.
12319
12320         Contributed under MIT/X11 license.
12321
12322 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12323
12324         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12325         element class.
12326
12327         * mini.c: Generic sharing for unbox.any and castclass.
12328
12329 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12330
12331         * mini.c: Ignore tailcall prefix in shared generic code and when
12332         doing calls which require a vtable/rgctx argument.
12333
12334 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12335
12336         * mini.c: Don't free the JIT info.
12337
12338         * driver.c: Changes in the JIT info table testing code.
12339
12340 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12341
12342         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12343         interruption. Fix some warnings.
12344
12345         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12346         interruption_checkpoint.
12347
12348 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12349
12350         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12351         from embedding applications.
12352
12353 2008-06-02  William Holmes  <billholmes54@gmail.com>
12354
12355         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12356           reserving 32 bytes on the stack when making calls. 
12357
12358         Contributed under MIT/X11 license.
12359
12360 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12361
12362         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12363         the linear IL branch.
12364
12365         * driver.c: Print out more information for --version on arm.
12366
12367 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12368
12369         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12370         bb_exit instead, since out of line bblocks might not actually be emitted
12371         out-of-line.
12372         
12373         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12374         maximum epilog size for out of line bblocks if tracing is enabled.
12375
12376         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12377
12378 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12379
12380         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12381
12382 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12383
12384         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12385         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12386         opcodes.
12387
12388 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12389
12390         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12391         the 'value' to store is a constant.
12392
12393         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12394
12395         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12396         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12397
12398 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12399
12400         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12401         for accessing method->generic_container.
12402
12403 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12406         
12407         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12408
12409         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12410
12411         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12412         fails.
12413
12414 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12415
12416         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12417
12418         * mini.c: Handle the case when mono_class_vtable () fails.
12419
12420 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12421         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12422         the stat profiler.
12423
12424 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12425
12426         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12427         together with domain sharing.
12428
12429 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12430
12431         * mini.c: Treat callvirts to final methods like non-virtual calls
12432         when doing generic sharing, i.e. look them up in the runtime
12433         generic context.
12434
12435 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12436
12437         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12438         with computed types (for generic sharing).
12439
12440         * mini.c: Generic sharing for mkrefany and refanyval.
12441
12442 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12443
12444         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12445         possible.
12446
12447         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12448         the generic sharing code.
12449         
12450         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12451         when needed.
12452
12453 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12454
12455         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12456
12457 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12458
12459         * driver.c: updated copyright date
12460
12461 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12462
12463         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12464         needed.
12465
12466 2008-05-19  Martin Baulig  <martin@ximian.com>
12467
12468         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12469         pointing to the new `_mono_debug_using_mono_debugger' variable.
12470
12471         * driver.c
12472         (mono_main): Check mono_debug_using_mono_debugger() rather than
12473         the `MONO_INSIDE_MDB' environment variable to check whether we're
12474         inside the debugger.
12475
12476 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12477
12478         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12479         argument.
12480
12481 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12482
12483         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12484
12485         * mini.c: Added mini_assembly_can_skip_verification. This
12486         function checks if the assembly requested to skip verification. 
12487         Fixes part of #387274.
12488
12489 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12490
12491         * mini.c (mini_get_method): Disable the check for open generic classes when
12492         using generic sharing.
12493
12494         * generics.cs: Add a test for #387034.
12495
12496         * mini.c (mini_get_method): Check whenever the method class is an open generic
12497         type, and return NULL in that case, causing a verification error. Fixes
12498         #384123.
12499
12500 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12501
12502         * driver.c (mono_main): Revert r102623. The right
12503         thing to do is to enable the verifier under verifiable
12504         unless a --security flag was passed.
12505
12506         We need this non-trivial behavior for --verify-all otherwise
12507         mcs-compileall won't be able to use it. As it needs everything to
12508         be verified under validil.
12509
12510 2008-05-06  Martin Baulig  <martin@ximian.com>
12511
12512         Fix #383749.
12513
12514         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12515         (mono_debugger_thread_cleanup): Likewise.
12516         (mono_debugger_extended_notification): Likewise.
12517
12518 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12519
12520         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12521         against both inflated and non-inflated methods. We need to check against the
12522         generic definition for cases where the instantiated method is not visible.
12523         We need to check against the inflated types for cases where the instantiation
12524         changes any super type. This fixes #382986.
12525
12526         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12527         that check for visibiliy as generic params only appears as the type subject
12528         of tokens on call opcodes. Field manipulation and ldftn must always
12529         target an exact type.
12530
12531 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12532
12533         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12534         if no related --security flag is passed.
12535
12536 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12537
12538         * mini-arch.h: Prepare support for ppc64.
12539
12540         Contributed under MIT/X11 license.
12541
12542 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12543
12544         * aot-runtime.c: Prepare support for ppc64.
12545
12546         Contributed under MIT/X11 license.
12547
12548 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12549
12550         * mini-ops.h: Prepare support for ppc64.
12551
12552         Contributed under MIT/X11 license.
12553
12554 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12555
12556         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12557
12558         Contributed under MIT/X11 license.
12559
12560 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12561
12562         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12563         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12564         assemblies on windows.
12565
12566 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12567
12568         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12569         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12570         * main.c: Use UTF-8 encoded command line instead of Windows default code
12571         page on Windows to support Unicode.
12572         * driver.c (DllMain): New function for mixed-mode assembly support.
12573         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12574         export __stdcall functions without decoration.
12575
12576         Contributed under MIT/X11 license.
12577
12578 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12579
12580         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12581         saving it very early.
12582
12583 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12584
12585         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12586         deleted.  The only way to access the new RGCTX is via the
12587         trampline.
12588
12589         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12590         vtable instead of the RGCTX to static methods.
12591
12592         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12593         accessing the new RGCTX.
12594
12595         * generic-sharing.c: There is no separation between self, type
12596         arguments and other types in the RGCTX anymore.
12597
12598 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12599
12600         * mini-amd64.c (add_general): Remove previous stack adjustment.
12601         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12602         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12603         for 32 bytes of stack space reserved for all calls.
12604         
12605         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12606         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12607         adjustment.
12608         
12609         Code contributed under MIT/X11 license.
12610
12611 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12612
12613         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12614         against the root definition, peeling out method and type instantiations.
12615         Cache verify success results, code that fails verification is still
12616         checked multiple times.
12617
12618 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12619
12620         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12621
12622 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12623
12624         * mini-amd64.c (add_general): Always increment stack on Win64.
12625         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12626         on Win64.
12627         
12628         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12629         stack based argument handling on Win64.
12630         
12631         Code contributed under MIT/X11 license.
12632
12633 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12634
12635         * Makefile.am (version.h): Add support for git-svn.
12636
12637 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12638
12639         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12640         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12641         avoiding allocations and libc functions which might deadlock.
12642         
12643         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12644         'no-gdb-backtrace' option is set.
12645
12646         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12647
12648         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12649
12650 2008-04-21  Martin Baulig  <martin@ximian.com>
12651
12652         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12653         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12654
12655 2008-04-21  Martin Baulig  <martin@ximian.com>
12656
12657         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12658         `thread_vtable', `event_handler_ptr' and `event_handler'.
12659
12660 2008-04-21  Martin Baulig  <martin@ximian.com>
12661
12662         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12663         allows delayed initialization of the `executable_code_buffer' when
12664         attaching.
12665
12666 2008-04-21  Martin Baulig  <martin@ximian.com>
12667
12668         * mini.h (mono_debugger_create_notification_function): Removed.
12669         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12670
12671         * mdb-debug-info64.s
12672         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12673
12674         * mdb-debug-info32.s
12675         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12676
12677         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12678         currently only works on x86 and x86_64, so don't create it on ppc.
12679
12680 2008-04-21  Martin Baulig  <martin@ximian.com>
12681
12682         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12683
12684         * mini.c
12685         (mini_method_compile): In the fp elimination check, check
12686         `debug_options.mdb_optimizations' in addition to
12687         mono_debug_using_mono_debugger().       
12688
12689         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12690         disable some JIT optimizations which are only disabled when
12691         running inside the debugger.
12692         Added `--help-debug' option to describe the debugging options.
12693         (parse_debug_options): New static function to parse the `--debug'
12694         options, so we can easily add more stuff in future.
12695
12696 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12697
12698         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12699         the method has no body.
12700
12701 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12702
12703         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12704         assembly is not allowed in MSVC 64-bit compiler. 
12705         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12706         as we get floating point exceptions everywhere.
12707         
12708         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12709         correctly align arguments for call to throw_exception.
12710         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12711         
12712         Code contributed under MIT/X11 license.
12713
12714 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12715
12716         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12717
12718 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12719
12720         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12721
12722         * mini-amd64.c (NEW_INS): Set cil_code.
12723
12724         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12725         from mini-amd64.c so all debugger related logic is in one place.
12726
12727         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12728         later won't have a random ip assigned to them.
12729
12730 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12731
12732         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12733         the arch specific function initializes code_size.
12734         (mono_create_delegate_trampoline): Ditto.
12735
12736         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12737         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12738         platforms.
12739
12740         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12741         running under the debugger.
12742
12743         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12744         debugger.
12745
12746         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12747         debugger. Also move the disabling of optimizations here from driver.c.
12748         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12749         debugger.
12750
12751         * mini.h (MonoCompile): Add a few new flags.
12752
12753 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12754
12755         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12756         so the cil_code field of created MonoInst's is properly set.
12757         (mini_select_instructions): Ditto.
12758
12759         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12760         (MONO_INST_NEW_CALL): Ditto.
12761
12762         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12763         in many places so the ins->cil_code field is properly initialized.
12764
12765         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12766         place.
12767
12768 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12769
12770         * mini.c (mini_method_compile): Print a different message when compiling a 
12771         shared method.
12772         
12773         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12774         > 1.
12775
12776 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12777
12778         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12779         SSE2 instructions.
12780
12781         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12782         
12783 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12784
12785         * mini.c (handle_stack_args): Make this return void since its return value was
12786         never used. Also set cfg->unverifiable for invalid IL instead of calling
12787         G_BREAKPOINT ().
12788
12789 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12790
12791         * mini.c: Make sure "this" is live in catch clauses with type
12792         variables in shared generic code.
12793
12794 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12795
12796         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12797         generic_class_is_reference_type() to ensure the proper behaviour
12798         when sharing generic code and the type in question is a type
12799         argument.
12800
12801 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12804         race conditions when printing thread dumps. Fixes #377738.
12805
12806 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12807         
12808         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12809         shows up when both MonoInst arguments can cause aliasig.
12810         There is likely no way in the current JIT to trigger this problem, but
12811         it showed up in the development of generics sharing, when in a new
12812         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12813         When the generics sharing code will be committed, its tests will be
12814         valid also for this bug.
12815
12816 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12819         PATCH_INFO_METHOD.
12820
12821         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12822         NULL.
12823
12824 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12825
12826         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12827         use a more detailed exception message for InvalidCastException.
12828
12829         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12830
12831         * driver.c (mono_main): Add --debug=casts option to turn on better 
12832         InvalidCastException message details.
12833
12834         * mini.c (mini_get_debug_options): New helper function to return the address of
12835         the debug_options variable.
12836
12837         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12838         the jit_tls TLS variable.
12839
12840         * mini.c (mono_jit_tls): New TLS variable.
12841
12842         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12843         option is used.
12844
12845 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12846
12847         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12848
12849         * mini.c: Removed verifer related stuff, code moved to verify.c.
12850
12851         * driver.c: Using code from verify.c instead of mini.c.
12852
12853 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12854
12855         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12856         longer valid.
12857
12858 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12859
12860         * mini.c (check_for_method_verify): Enabling verification of
12861         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12862         have been fixed.
12863
12864 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12867         caller saved registers as well.
12868         
12869         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12870         saved registers as well.
12871
12872 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12873
12874         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12875
12876         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12877         code.
12878
12879 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12882         to get_call_info.
12883         (get_call_info): Take a gsctx argument instead of 'cfg'.
12884
12885 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12886
12887         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12888         mono_verify_all is set.
12889
12890         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12891
12892         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12893
12894 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12895
12896         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12897         an exception.
12898
12899         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12900         verifier and the code generated by the compiler.
12901
12902 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12903
12904         * mini.c: Generic sharing of the non-nullable case of the box
12905         instruction.
12906
12907 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12908
12909         * inssel.brg: Fix the build.
12910
12911         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12912
12913 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12914
12915         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12916         Array:Address. Fixes #372410.
12917
12918         * iltests.il.in: New tests for readonly prefix.
12919
12920 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12921
12922         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12923         mini-trampolines.c.
12924
12925         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12926         mini-exceptions.c.
12927
12928         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12929         
12930         * mini.c (mono_decompose_op_imm): New helper function.
12931
12932         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12933         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12934         return value.
12935
12936         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12937         mono_arch_output_basic_block. Fix warnings.
12938
12939         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12940         for now.
12941
12942 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12943
12944         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12945         since the extra frame is now detected automatically inside the loop.
12946
12947         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12948         opts which are now in mono_peephole_ins ().
12949         
12950         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12951
12952         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12953         frames and skip duplicate managed-to-native frames. Fixes #367665.
12954
12955         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12956         opts which are now in mono_peephole_ins ().
12957         (mono_arch_peephole_pass_2): Ditto.
12958
12959         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12960
12961         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12962         arch independent peephole optimizations.
12963
12964         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12965         opts which are now in mono_peephole_ins ().
12966
12967         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12968         
12969         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12970
12971         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12972         pattern.
12973
12974         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12975         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12976         opcode. 
12977
12978 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12979
12980         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12981         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12982         return value.
12983
12984         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12985         mono_arch_output_basic_block. Fix warnings.
12986
12987 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12988
12989         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12990         conv.ovf.u.un.
12991
12992 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12993
12994         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12995         conv.ovf.u.un.
12996
12997         * iltests.il: Add new tests.
12998
12999 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13000
13001         * mini.c: Removed Windows version macros.
13002
13003 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13004
13005         * generic-sharing.c: Put reflection types in the extensible part
13006         of the runtime generic context.
13007
13008         * mini.c: Generic sharing of the GetTypeHandle special case of the
13009         ldtoken instruction.
13010
13011 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13012
13013         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13014
13015         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13016         
13017         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13018         consistency with the other version on the linear IR branch.
13019
13020         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13021
13022         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13023
13024         * iltests.il.in: Add new tests.
13025
13026 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13027
13028         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13029
13030         * iltests.il.in: Add new tests.
13031
13032 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13033
13034         * mini.c: Two variables with the same name were declared in
13035         nesting contexts and one wasn't initialized.  Fixed.
13036
13037 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13038
13039         * mini.c: Generic sharing of the initobj instruction.
13040
13041 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13042
13043         * mini.c: make the test to optimize ldtoken from typeof() more
13044         precise.
13045
13046 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13047
13048         * mini.c: Generic sharing of the initobj instruction for reference
13049         types.
13050
13051 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13052
13053         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13054         the mono_breakpoint_clean_code() code to perform bound checks.
13055
13056 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13057
13058         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13059         mono_arch_patch_callsite() to include the start of the managed method
13060         to be able to perform bound checks.
13061
13062 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13063
13064         * mini.c: Generic sharing for the isinst instruction.
13065
13066 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13067
13068         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13069         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13070         with the runtime generic context argument.
13071
13072         * mini.c: Share calls to several types of unsharable methods by
13073         putting the address of the method code in the runtime generic
13074         context and doing an indirect call.
13075
13076         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13077         to switches.
13078
13079 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13080
13081         * generic-sharing.c: Change due to a change in the runtime genric
13082         context API.
13083
13084 2008-03-15  Martin Baulig  <martin@ximian.com>
13085
13086         * tramp-x86.c
13087         (mono_arch_nullify_class_init_trampoline): Add call to
13088         mono_breakpoint_clean_code() to make things work when running
13089         inside the debugger.
13090
13091         * tramp-amd64.c
13092         (mono_arch_nullify_class_init_trampoline): Add call to
13093         mono_breakpoint_clean_code() to make things work when running
13094         inside the debugger.
13095
13096 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13097
13098         * inssel-long.brg (reg): Fix 64 bit build.
13099
13100 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13101
13102         * mini.c, mini.h: Share static generic code by passing it an
13103         implicit argument pointing to the runtime generic context.
13104
13105         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13106         inssel-long32-mips.brg: New opcodes for calling shared static,
13107         which need to be passed the runtime generic context.
13108
13109         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13110         argument on the stack in the prologue if needed.  New function for
13111         finding the runtime generic context argument from the registers
13112         saved by the trampoline.
13113
13114         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13115         runtime generic context argument.
13116
13117         * tramp-amd64.c: Also restore the register used for the runtime
13118         generic context argument.
13119
13120         * mini-trampoline.c: Resolve shared static calls by consulting the
13121         runtime generic context via the new argument.
13122
13123         * generic-sharing.c: Add an argument to sharability-checking
13124         functions that specifies whether type variables should be treated
13125         as sharable type arguments.
13126
13127         * inssel-x86.brg: Removed a superfluous, buggy rule.
13128
13129         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13130         to switches.
13131
13132 2008-03-14  Martin Baulig  <martin@ximian.com>
13133
13134         * debug-debugger.c (main_thread_handler): Call
13135         mono_runtime_run_main() without sending any notifications.
13136
13137         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13138
13139 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13140
13141         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13142
13143 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13144
13145         * tramp-x86.c: Fixed register restore offsets in the trampoline
13146         code for ECX and EDX.
13147
13148 2008-03-12  Geoff Norton  <gnorton@novell.com>
13149
13150         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13151         different ucontext_t implementations.
13152         * exceptions-arm.c: Use the above defines to get exceptions working on 
13153         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13154         * mini-arm.c: Implement iPhone icache support (based on a patch by
13155         Luke Howard lukeh@padl.com)
13156
13157 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13158
13159         * mini.c: Enable generic sharing of calls to non-static
13160         non-interface non-generic non-value-type methods.
13161
13162         * mini-trampolines.c: Resolve calls from shared generic code.
13163
13164 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13165
13166         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13167
13168         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13169
13170 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13171
13172         * mini.c: some fixes for the AOT compiler.
13173
13174 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13175
13176         * cpu-amd64.md: Add clob:1 to some float opcodes.
13177
13178 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13179
13180         * mini.h: Added MiniVerifierMode enumeration.
13181
13182         * mini.c: Added mini_verifier_set_mode to control
13183         the usage of the new verifier.
13184
13185         * mini.c (mono_method): Integrated the new verifier.
13186
13187         * driver.c: Extended --security option with validil and
13188         verifiable options to activate the new verifier.
13189
13190 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13191
13192         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13193         optimization to ctors taking 0 or 2 arguments too.
13194
13195         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13196         a bit.
13197
13198         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13199
13200         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13201
13202 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13203
13204         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13205         non-aot case as well.
13206
13207         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13208
13209         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13210         changes.
13211
13212         * aot-compiler.c (encode_patch): Ditto.
13213
13214         * mini.h (G_MININT32): Fix the definition of this.
13215
13216 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13219
13220         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13221
13222 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13223
13224         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13225         methods returning vtypes in registers.
13226         (mono_arch_allocate_vars): Ditto.
13227
13228         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13229
13230         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13231
13232         * generics.cs: Add a test from the linear IR branch.
13233
13234         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13235
13236         * mini.c (inline_method): Cache failed inline attempts.
13237
13238 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13239
13240         * mini.c: For shared methods of generic classes put the location
13241         of "this" into the MonoGenericJitInfo.
13242
13243         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13244         register out of a MonoContext by register number.  Add the generic
13245         sharing context as an argument to mono_arch_find_this_argument().
13246
13247         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13248         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13249         for new arch function.
13250
13251         * mini-exception.c: Handle open exception clauses in shared
13252         generic code.
13253
13254         * mini-trampolines.c: Supply additional argument to
13255         mono_arch_find_this_argument().
13256
13257 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13258
13259         * Makefile.am (regtests): Run the bench.exe tests last.
13260
13261 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13262
13263         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13264         a bit.
13265
13266 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13267
13268         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13269         with MS.
13270
13271         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13272         
13273         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13274
13275         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13276         whose class has no cctor.
13277
13278         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13279
13280 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13283         unverified.
13284
13285 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13288         to be in sync with the code on the linear IR branch.
13289
13290         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13291
13292         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13293
13294 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13295
13296         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13297
13298         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13299
13300         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13301
13302         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13303
13304         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13305         
13306         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13307         body.
13308
13309 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13310
13311         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13312         OP_LOADR4_MEMBASE emission.
13313
13314         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13315         (mono_spillvar_offset_float): Ditto.
13316
13317         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13318
13319         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13320         emission.
13321
13322         * basic-long.cs: Add regression tests for them.
13323
13324         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13325         use.
13326         (mono_arch_allocate_vars): Fix representation of single-precision float
13327         argument.
13328         (mono_arch_output_basic_block): Ditto.
13329
13330         * inssel-mips.brg: Ditto, remove duplicate items.
13331
13332         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13333         arguments of tail calls as on other platforms.
13334         (mono_arch_output_basic_block): Handle tail calls.
13335
13336         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13337         register.
13338
13339         * objects.cs (test_5_pass_static_struct): Add test for it.
13340
13341         Contributed under MIT/X11 license.
13342
13343 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13344
13345         * Makefile.am: Use gmcs for compiling the regression tests.
13346
13347         * *.2.cs *.2.il: Rename to *.cs and *.il.
13348
13349 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * regalloc.h: Make the vassign array smaller.
13352
13353         * mini.c (mini_method_compile): Remove an unused field in cfg.
13354
13355         * mini-codegen.c: Add a bunch of micro optimizations.
13356
13357 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * regalloc.h: Remove some unused fields.
13360
13361 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13362
13363         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13364
13365         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13366
13367 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13368
13369         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13370
13371         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13372         trampoline: Fetch an entry from the runtime generic context.  If
13373         it's NULL, jump to the actual trampoline to fill the runtime
13374         generic context.  Otherwise, return it.
13375
13376         * mini.c: Call the lazy fetch trampoline to get entries out of the
13377         runtime generic context.
13378
13379         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13380         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13381         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13382
13383 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13384
13385         * mini.c: Fetch data out of the extensible part of the runtime
13386         generic context instead of calling a helper function.
13387
13388         * generic-sharing.c: Some functions moved into
13389         metadata/generic-sharing.c.  Helper function for fetching other
13390         types now checks and asserts against extensible rgctx (just for
13391         debugging purposes - the helper function isn't called anymore
13392         unless for debugging).
13393
13394 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13395
13396         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13397         for tail calls up to the point that the tests in iltests.exe run. Also add a
13398         dummy CKFINITE implementation.
13399         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13400         needed for trampoline LMF frames.
13401
13402         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13403         trampoline LMF frames.
13404
13405 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13406
13407         * mini.c (inline_method): clean any pending loader error when inlining fail.
13408         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13409
13410 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13411
13412         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13413
13414         * aot-runtime.c (decode_patch_info): Ditto.
13415
13416         * mini.c (mono_resolve_patch_target): Ditto.
13417         
13418         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13419         icall wrappers.
13420
13421         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13422         
13423         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13424         if it references an icall address.
13425
13426 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13427
13428         * cpu-s390x.md: Remove some more unused opcodes.
13429         
13430         * cpu-s390x.md: Remove some unused opcodes.
13431
13432         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13433         mono_op_imm_to_op ().
13434
13435         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13436         instead of a switch statement.
13437         
13438         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13439         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13440
13441         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13442         
13443         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13444
13445         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13446         -1.
13447
13448 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13449
13450         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13451         opened. Fixes #362607.
13452
13453         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13454
13455         * iltests.il.in: Add a test for static methods in interfaces.
13456
13457 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13458
13459         * genmdesc.c (build_table): Fix a crash on older glib versions.
13460
13461         * cpu-sparc.md: Remove some unused opcodes.
13462         
13463         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13464         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13465
13466         * cpu-amd64.md: Remove some unused opcodes.
13467
13468         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13469         like the other opcodes.
13470
13471 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13472
13473         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13474
13475         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13476
13477         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13478         variables 'cfg' instead of 'm' for consistency.
13479
13480         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13481
13482         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13483         argument holding the vtype return address, to avoid the ambigious use of
13484         cfg->ret for this purpose.
13485
13486         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13487
13488         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13489         
13490         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13491         new mono_print_ins () function which only takes one argument.
13492
13493 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13494
13495         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13496         macro arguments.
13497
13498 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13499
13500         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13501
13502         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13503
13504         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13505         opcodes and other small changes.
13506
13507         * mini-ops.h: Add some new opcodes from the linear IR branch.
13508
13509         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13510
13511         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13512         opcodes, use the REG_MEMBASE opcodes instead.
13513         
13514         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13515         opcodes, use the REG_MEMBASE opcodes instead.
13516         
13517         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13518         linear IR branch.
13519
13520         * mini.c (mono_op_imm_to_op): New helper function.
13521
13522         * mini-ops.h: Add some opcodes from linear IR branch.
13523
13524 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13525
13526         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13527         <tsv@solvo.ru>.
13528
13529 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13530
13531         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13532         OP_ICONV_TO_R4/R8.
13533
13534         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13535
13536 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13537
13538         * aot-compiler.c (emit_method_code): Add an assert.
13539
13540         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13541         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13542         methods.
13543
13544 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13545
13546         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13547         some load/store opcodes so they are consistent. 
13548         (mono_arch_emit_prolog): Simplify some code.
13549
13550         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13551
13552         * objects.cs: Add tests for large argument offsets on ARM.
13553
13554         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13555         stack offsets. Fixes #359651.
13556
13557         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13558
13559         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13560
13561         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13562
13563         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13564
13565         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13566
13567         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13568         rid of CEE_CONV_R_UN.
13569
13570         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13571
13572 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13573
13574         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13575
13576         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13577
13578         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13579
13580         * cpu-amd64.md: Remove some unused opcodes.
13581
13582         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13583
13584         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13585
13586         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13587         arch specific functions for its parts. Call the peephole pass after local
13588         regalloc so the prolog can compute a more accurate max_offset.
13589         
13590         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13591         the corresponding OP_I/OP_L opcodes.
13592
13593         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13594
13595         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13596
13597 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13598
13599         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13600         as they are handled in mini.c.
13601
13602         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13603         
13604         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13605         case since it is handled in mini.c.
13606
13607         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13608
13609         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13610
13611         * *.c: Use the new opcodes in the IR and back end code.
13612
13613         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13614
13615         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13616
13617 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13618
13619         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13620         an assert because it has a race condition.
13621
13622 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13623
13624         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13625
13626         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13627
13628         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13629
13630         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13631         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13632
13633 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13634
13635         * cpu-amd64.md (move): Correct the maximum size of move.
13636
13637 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13638
13639         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13640         the generic class init trampoline to return quickly if the class
13641         is already inited.
13642
13643 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13644
13645         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13646         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13647
13648 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13649
13650         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13651         branch.
13652
13653 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13654
13655         * objects.cs: Add some soft-float tests.
13656
13657         * mini.c: Fix a couple more soft-float issues.
13658
13659         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13660
13661         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13662         avoid a REX prefix.
13663
13664 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13665
13666         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13667         exception happens while compiling a virtual method.
13668
13669 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13670
13671         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13672         
13673         * mini-sparc.c: Fix build.
13674
13675         * mini-sparc.c (get_call_info): Add support for generic sharing.
13676
13677         * mini-exceptions.c: Add a FIXME.
13678
13679 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13680
13681         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13682         altstack handling code.
13683
13684         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13685         
13686         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13687
13688         * mini-s390.c: Add support for generic sharing.
13689
13690         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13691         Fix CAS on s390.
13692         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13693
13694         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13695
13696         * mini-s390x.c: Add support for generic sharing.
13697         
13698         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13699         Fix CAS on ia64.
13700         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13701
13702         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13703         can be used since it takes a 16 bit signed immediate.
13704
13705         * inssel-s390x.brg: Fix OP_SETRET.
13706
13707         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13708
13709         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13710
13711         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13712
13713         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13714
13715         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13716         in one place.
13717
13718         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13719         stuff.
13720
13721         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13722         of the unused mono_arch_patch_delegate_trampoline stuff.
13723
13724 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13725
13726         * basic-long.cs: Move the fp related tests to basic-float.cs.
13727
13728         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13729
13730         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13731
13732         * basic-calls.cs: Add a test for proper float argument passing.
13733
13734         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13735         if the context corresponds to an exception received through a signal.
13736
13737         * exceptions.cs: Add a test for nullref handling at the start of a try
13738         clause.
13739
13740         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13741
13742         * jit-icalls.c (mono_break): New JIT icall.
13743
13744         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13745
13746         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13747
13748 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13749
13750         * cpu-*.md: Get rid of unused opcodes.
13751
13752         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13753
13754         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13755         by all platforms.
13756
13757         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13758         define.
13759
13760         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13761         the arch independent trampoline code in mini-trampolines.c.
13762
13763         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13764
13765         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13766
13767         * mini-s390.h: Remove an unused define.
13768         
13769         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13770         the arch independent trampoline code in mini-trampolines.c.
13771
13772         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13773
13774 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13775
13776         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13777
13778         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13779
13780         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13781
13782         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13783
13784         * cpu-amd64.md: Use smaller sizes for int opcodes.
13785
13786         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13787
13788         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13789         objects.cs.
13790
13791         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13792         debugging.
13793
13794         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13795         instead of though a pointer to save an indirection when accessing elements of
13796         the array.
13797
13798         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13799         some typos.
13800         (NOT_IMPLEMENTED): New helper macro.
13801         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13802         of a bb.
13803
13804         * *.c: Use the new helper macro.
13805
13806 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13807
13808         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13809
13810 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13811
13812         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13813         stack slots.
13814
13815 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13816
13817         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13818         profiling is enabled.
13819         
13820         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13821         the end.
13822         (mono_arch_emit_prolog): Add more first bblock optimizations.
13823
13824         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13825         in order if possible.
13826         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13827         bblock, since the arguments are still in their original registers.
13828
13829         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13830
13831 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13834         as well.
13835
13836         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13837         offset 0.
13838
13839         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13840
13841         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13842         process async exceptions received while in unmanaged code.
13843
13844         * mini.c (mini_init): Install a callback with the runtime which will be called
13845         when a thread receives an async exception while in unmanaged code.
13846
13847         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13848
13849         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13850
13851 2008-01-16  Wade Berrier  <wberrier@novell.com>
13852
13853         * cpu-g4.md:
13854         * cpu-arm.md:
13855         * cpu-s390x.md:
13856         fix build
13857
13858 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13859
13860         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13861         compilation with sun cc.
13862
13863         * cpu-*.md: Fix the build.
13864
13865         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13866
13867         * mini-amd64.h: Add some comments to the MonoLMF structure.
13868
13869         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13870         
13871         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13872         in the LMF structure if possible. This saves two instructions in the
13873         managed->native wrappers.
13874
13875         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13876
13877 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13878
13879         * generic-sharing.c: New type argument lookup code which uses the
13880         runtime generic context template.
13881
13882 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13883
13884         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13885
13886         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13887         (mono_arch_output_basic_block): Fix localloc implementation.
13888
13889         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13890
13891         * mini-ia64.c (peephole_pass): Fix ia64 build.
13892
13893         * mini-amd64.c (peephole_pass): Fix a warning.
13894         
13895         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13896         at a constant offset from sp/fp.
13897
13898         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13899         instead of obtaining it from *lmf in the managed method case.
13900
13901 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13902
13903         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13904
13905 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13906
13907         * mini.h (MonoInstList): New type.
13908         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13909         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13910         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13911         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13912         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13913         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13914         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13915         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13916         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13917         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13918         MONO_INST_LIST_FOR_EACH_ENTRY,
13919         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13920         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13921         mono_inst_list_first, mono_inst_list_last,
13922         mono_inst_list_next, mono_inst_list_prev): New instruction
13923         list handling interfaces.
13924         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13925         list head 'ins_list'.
13926         (MonoInst): Replace next pointer with list head 'node'.
13927         (MonoCallInst): Make 'out_args' a MonoInstList.
13928         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13929         (MonoCompile): Delete reverse_inst_list and
13930         reverse_inst_list_len.
13931         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13932         mono_arch_lowering_pass, mono_arch_local_regalloc,
13933         mono_arch_output_basic_block, mono_arch_emit_prolog):
13934         Convert to new instruction lists.
13935         (insert_after_ins): Delete.
13936         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13937         instruction lists.
13938         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13939         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13940         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13941         mono_emulate_opcode, mono_emit_load_got_addr,
13942         inline_method, mono_method_to_ir, mono_print_bb_code,
13943         print_dfn, decompose_pass, nullify_basic_block,
13944         replace_out_block_in_code, remove_block_if_useless,
13945         merge_basic_blocks, move_basic_block_to_end,
13946         try_unsigned_compare, optimize_branches, mono_print_code,
13947         mini_select_instructions, remove_critical_edges): Likewise.
13948         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13949         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13950         mono_arch_output_basic_block, mono_arch_emit_prolog):
13951         Likewise.
13952         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13953         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13954         mono_arch_output_basic_block): Likewise.
13955         (inst_list_prepend, insert_after_ins): Delete.
13956         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13957         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13958         instruction lists.
13959         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13960         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13961         mono_arch_emit_prolog): Likewise.
13962         * cfold.c (mono_constant_fold): Likewise.
13963         * liveness.c (visit_bb, mono_analyze_liveness,
13964         optimize_initlocals): Likewise.
13965         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13966         * graph.c (mono_draw_code_cfg): Likewise.
13967         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13968         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13969         mono_ssa_cprop): Likewise.
13970         * abcremoval (get_relations_from_previous_bb, process_block):
13971         Likewise.
13972         * local-propagation (mono_cprop_invalidate_values,
13973         mono_local_cprop_bb): Likewise.
13974         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13975         peephole_pass, mono_arch_output_basic_block,
13976         mono_arch_emit_prolog): Likewise.
13977         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13978         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13979         mono_arch_emit_prolog): Likewise.
13980         (insert_after_ins): Delete.
13981         * aliasing.c (print_code_with_aliasing_information,
13982         mono_build_aliasing_information, mono_aliasing_deadce):
13983         Convert to new instruction lists.
13984         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13985         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13986         mono_arch_local_regalloc, mono_arch_output_basic_block):
13987         Likewise.
13988         (insert_after_ins): Delete.
13989         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13990         peephole_pass, mono_arch_output_basic_block): Convert to
13991         new instruction lists.
13992         * mini-codegen (InstList, inst_list_prepend,
13993         insert_after_ins): Delete.
13994         (insert_before_ins, get_register_force_spilling,
13995         get_register_spilling, free_up_ireg, free_up_reg,
13996         create_copy_ins, create_spilled_store, alloc_int_reg,
13997         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13998         to new instruction lists.
13999         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14000         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14001         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14002         (insert_after_ins): Delete.
14003         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14004         mono_arch_local_regalloc, mono_arch_output_basic_block,
14005         mono_arch_call_opcode): Convert to new instruction lists.
14006         (insert_after_ins): Delete.
14007         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14008         peephole_pass, mono_arch_output_basic_block,
14009         mono_arch_emit_prolog): Convert to new instruction lists.
14010
14011 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14012
14013         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14014
14015         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14016         Fixes #353182.
14017
14018         * Makefile.am (version.h): Make this work with non-bash shells.
14019
14020 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14021
14022         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14023
14024 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14025
14026         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14027         the InitializeArray optimization.
14028
14029 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14030
14031         * mini.c driver.c: Don't include os/gc_wrapper.h.
14032
14033 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14034
14035         * mini.c (print_jit_stats): Print GC statistics if available.
14036
14037 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14038
14039         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14040
14041 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14042
14043         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14044
14045 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14046
14047         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14048         
14049         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14050
14051         * driver.c (mono_main): Ditto.
14052
14053 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14054
14055         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14056
14057         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14058         in the vtable can't be encoded.
14059         (compile_method): Ditto.
14060
14061 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14062
14063         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14064         defined.
14065
14066         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14067         lmf->rbp.
14068
14069         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14070         the top LMF entry belongs to the current method.
14071
14072         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14073
14074 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14075
14076         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14077         
14078         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14079
14080         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14081
14082         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14083
14084         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14085
14086         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14087         implementation.
14088
14089         * basic-float.cs: Add an ulong->double cast test.
14090
14091 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14092
14093         * mini.c (mono_method_to_ir): Fix a warning.
14094
14095 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14096
14097         * mini-ops.h: Add OP_SWITCH.
14098
14099         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14100         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14101
14102 2007-12-11  Geoff Norton  <gnorton@novell.com>
14103
14104         * mini-s390x.c: Minor change to the MAX() define to allow
14105         it to compile with other gcc versions.
14106
14107 2007-12-11  Geoff Norton  <gnorton@novell.com>
14108
14109         * cpu-s390x.md:
14110         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14111
14112 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14113
14114         exceptions-arm.c (mono_arch_get_restore_context): Restore
14115         the frame pointer.
14116
14117         exceptions-arm.c (throw_exception): Save the frame pointer.
14118         This is a partial fix for #323747. Only the client side is
14119         fixed.
14120
14121 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14122
14123         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14124         was using an unrelated variable to log the class which
14125         needed the cctor to be called. This was crashing on arm.
14126
14127 2007-12-09  Robert Jordan  <robertj@gmx.net>
14128
14129         * mini-x86.c (mono_arch_emit_epilog):
14130         Consider all kinds of 64-bit types. Fixes #323114.
14131
14132 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14133
14134         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14135
14136 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14137
14138         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14139
14140 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14141
14142         * mini.c: run type ctor before allocating an object, not only
14143         when running it's constructor method (fixes at least part of bug #342507).
14144
14145 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14146         
14147         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14148         
14149         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14150         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14151         function.
14152
14153         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14154         mono_generic_class_init_trampoline () the same as it is done with the other
14155         trampolines.
14156
14157         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14158         aot-runtime.c aot-compiler.c: Implement AOT support.    
14159
14160 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14161
14162         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14163         build for archs which don't have the vtable trampoline defined
14164         yet.
14165
14166 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14167
14168         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14169
14170         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14171
14172         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14173
14174         * tramp-<ARCH>.c: Use the new helper function.
14175
14176 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14177
14178         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14179         trampoline call, which takes a vtable argument.
14180
14181         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14182         OP_TRAMPCALL_VTABLEs like other calls.
14183
14184         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14185         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14186         call.  Implemented a support function which fetches the vtable
14187         from a register set.
14188
14189         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14190         Implemented a generic class init trampoline, using the
14191         OP_TRAMPCALL_VTABLE opcode.
14192
14193         * mini.c: Implemented static field access when sharing generic
14194         code.  This implies initing the class using the new
14195         OP_TRAMPCALL_VTABLE call.
14196
14197 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14198
14199         * mini.c: Don't compile methods with sharing enabled if their
14200         classes are disabled for sharing.
14201
14202 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14203
14204         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14205         opcodes. Fixes #346563.
14206
14207         * objects.cs: Add a new test.
14208
14209         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14210
14211         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14212         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14213
14214 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14215
14216         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14217
14218 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14219
14220         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14221         code stream.
14222
14223 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14224
14225         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14226
14227         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14228         optimization in the AOT case.
14229         
14230 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14231
14232         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14233         
14234         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14235
14236         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14237
14238         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14239
14240         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14241         is created by the inlined delegate ctor.
14242
14243         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14244
14245         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14246
14247 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14248
14249         * cpu-x86.md: Fix the length of ckfinite.
14250
14251 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14252
14253         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14254         
14255         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14256         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14257
14258         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14259
14260         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14261         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14262
14263 2007-11-28  Martin Baulig  <martin@ximian.com>
14264
14265         * mini-x86.c
14266         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14267         after creating the trampoline.
14268
14269 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14270
14271         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14272
14273         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14274         the same version.
14275
14276         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14277         instead of the calling method to help AOT.
14278
14279         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14280
14281 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14282
14283         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14284         is defined.
14285
14286 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14287
14288         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14289         
14290         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14291         (encode_method_ref): No need to handle generic method definitions specially.
14292
14293         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14294
14295         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14296         decode_klass_info.
14297
14298         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14299         encode_klass_info.
14300         (compile_method): Enable generic sharing.
14301
14302 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14303
14304         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14305         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14306
14307         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14308         generic code.
14309
14310         * mini-trampolines.c: Fix a warning.
14311
14312         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14313         NEW_PCONST.
14314         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14315         (generic_class_is_reference_type): Remove unused function.
14316
14317         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14318         in the generic vtable trampoline case.
14319
14320         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14321         
14322         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14323         return an AOT method based on a vtable slot.
14324
14325         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14326
14327         * mini.c (mini_get_vtable_trampoline): Export this.
14328
14329 2007-11-22  Martin Baulig  <martin@ximian.com>
14330
14331         * debug-debugger.h
14332         (MonoDebuggerInfo): Move `debugger_version' up.
14333
14334 2007-11-22  Martin Baulig  <martin@ximian.com>
14335
14336         * mini-amd64.c
14337         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14338
14339         * mini-trampolines.c
14340         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14341         after compiling the method.
14342
14343 2007-11-20  Martin Baulig  <martin@ximian.com>
14344
14345         * debug-mini.c
14346         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14347         (mono_debugger_remove_breakpoint): Likewise.
14348         (mono_debugger_check_breakpoints): Likewise.
14349
14350         * debug-debugger.c: Implement the new breakpoint interface here.
14351
14352 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14353
14354         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14355         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14356
14357         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14358
14359 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14360
14361         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14362
14363         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14364         mini.c.
14365
14366         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14367         mini.c.
14368
14369         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14370         returning a vtype in a register.
14371
14372         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14373         here from the arch specific code.
14374
14375         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14376         mini.c.
14377
14378         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14379         (mono_arch_emit_prolog): Increment maximum prolog size.
14380
14381         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14382         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14383
14384         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14385         MonoGenericSharingContext.
14386
14387         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14388         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14389
14390 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14391
14392         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14393         which extract fields out of the runtime generic context.  Full
14394         sharing of the NEWARR opcode.
14395
14396 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14397
14398         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14399         --enable-minimal=ssa.
14400
14401 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14402
14403         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14404         mono_marshal_get_delegate_invoke () signature change.
14405
14406 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14407
14408         * mini.c: Removed the shared context in favor of the generic
14409         sharing context.  Allocate the MonoJitInfo structure with room for
14410         the generic sharing context if it's needed.
14411
14412         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14413         domain-internals.h now.
14414
14415         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14416
14417         * generic-sharing.c: Several changes for working without a shared
14418         context and instead operating on open types instead.
14419
14420 2007-11-12  David S. Miller  <davem@davemloft.net>
14421
14422        * inssel-sparc.brg: Fix double instruction emit.
14423
14424 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14425
14426         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14427         Get/Set/Address methods.
14428         
14429         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14430         mono_marshal_get_delegate_invoke signature change.
14431
14432 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14433
14434         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14435         This can happens with dynamic methods. Fixes the other bug in #322722.
14436
14437 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14438
14439         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14440         BX call sequence.
14441
14442         * mini-arm.c (arm_patch): Implement patching of BX call
14443         sequence. Fixes one of the bugs in #322722.
14444
14445 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14446
14447        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14448        under Linux.  We only need to flush every 32-byte cache line.    
14449
14450 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14451
14452         * mini.c:
14453         move_basic_block_to_end: Add branches when needed, eventually creating
14454         a new BB.
14455         optimize_branches: added a parameter that tells if it's ok to create
14456         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14457         and avoid calling move_basic_block_to_end when it's not ok.
14458         Fixes bug 318677.
14459
14460 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14461
14462         * mini.c: Abort inlining call to InitializeArray if something
14463         looks wrong.  Let the icall handle it, which now has proper safety
14464         checks.
14465
14466 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14467
14468         * mini.c (mono_spill_call): add support for soft-float.
14469
14470         * mini.c (mono_method_to_ir): add support for soft-float
14471         to inlined functions that return float.
14472
14473         * mini.c (mono_method_to_ir): add support for soft-float
14474         to cee_stsfld opcode on float fields.
14475
14476 2007-11-05  Geoff Norton  <gnorton@novell.com>
14477
14478         * mini-x86.h: Fix the structure access for X86 Leopard.
14479
14480
14481 2007-11-05  Martin Baulig  <martin@ximian.com>
14482
14483         * mini-trampolines.c
14484         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14485         after compiling the method to notify the debugger.
14486
14487 2007-11-05  Martin Baulig  <martin@ximian.com>
14488
14489         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14490
14491 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14492
14493         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14494         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14495
14496 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14497
14498         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14499         native-to-managed wrappers.
14500         
14501 2007-11-01  Geoff Norton  <gnorton@novell.com>
14502
14503         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14504         members.
14505
14506 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14507
14508         * mini.c, mini-x86.c: when getting back from unmanaged code
14509         to managed via a marshaled delegate we also need to set the
14510         right domain.
14511
14512 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14513
14514         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14515         for amd64.
14516
14517 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14518
14519         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14520         let the debugger or other external agents to tell the JIT when
14521         a sw breakpoint has been inserted in the code that the JIT needs
14522         to be able to inspect.
14523
14524 2007-10-31  Martin Baulig  <martin@ximian.com>
14525
14526         * debug-debugger.h
14527         (MonoDebuggerInfo): Remove `runtime_class_init'.
14528
14529 2007-10-30  Martin Baulig  <martin@ximian.com>
14530
14531         * debug-mini.h
14532         (mono_debugger_thread_created): Added `MonoThread *' argument.
14533         (mono_debugger_extended_notification): New public method.
14534         (mono_debugger_trampoline_compiled): New public method.
14535
14536         * debug-mini.c
14537         (MonoDebuggerThreadInfo): Added `thread' and
14538         `extended_notifications' fields.
14539
14540         * debug-debugger.c
14541         (debugger_executable_code_buffer): New static variable.
14542
14543         * debug-debugger.h
14544         (MonoDebuggerInfo): Added `executable_code_buffer',
14545         `executable_code_buffer_size', `breakpoint_info_area',
14546         `breakpoint_table' and `breakpoint_table_size'.
14547
14548 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14549
14550         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14551         that IP  either is an unused value or the vtable pointer. IMT 
14552         calls use vtable + offset now. Reduced by almost half the size
14553         of IMT entries.
14554
14555 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14556
14557         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14558         defines to access param registers. Replace long usage with
14559         gsize as sizeof(long) != sizeof(void*) on Win64.
14560
14561         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14562         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14563         instead of non-existant _GetAddressOfReturnAddress.
14564
14565         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14566         param registers. Save/restore %rdi and %rsi in MonoLMF.
14567
14568         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14569         param registers. Modify (throw_exception) signature to take 
14570         %rdi and %rsi on Win64. 
14571
14572         Code is contributed under MIT/X11 license.
14573
14574 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14575
14576         * helpers.c: unlink debugging output files.
14577
14578 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14579
14580         * mini.c: Move mono_create_ftnptr () to object.c.
14581
14582 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14583
14584         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14585         optional. This function can now be used to disassemble code generated
14586         outside the JIT such as trampolines and IMT thunks.
14587
14588         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14589
14590         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14591         vtable pointer from a ldr instruction.
14592
14593         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14594         new IMT call sequence.
14595
14596         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14597         call sequence for interface invocations.
14598
14599         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14600         for imt support. This function is empty since IMT on ARM requires no
14601         special handling on the IR side.
14602
14603         * mini-arm.c (mono_arch_find_imt_method): added, required for
14604         imt support.
14605
14606         * mini-arm.c (mono_arch_find_this_argument): added, required
14607         for imt support.
14608
14609         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14610         a ldr instruction to load a value stored in the code stream.
14611
14612         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14613         for imt support.
14614
14615
14616 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14617
14618         * mini.c (mini_init): Install the jump trampoline callback.
14619
14620 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14621
14622         * mini-trampolines.c: handle synchronized methods with the common
14623         vtable trampoline (bug #335601).
14624
14625 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14626
14627         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14628
14629         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14630         64 bit platforms.
14631
14632         * mini-ia64.h mini-ia64.c: Add support for IMT.
14633
14634         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14635         prolog. Fixes #331958.
14636
14637 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14638
14639         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14640
14641 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14642
14643         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14644         trampoline.
14645
14646 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14649         trampoline.
14650
14651 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14652
14653         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14654         trampoline.
14655
14656 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14657
14658         * mini-trampolines.c: changed the magic rampoline to understand
14659         the common vtable trampoline method: the method to invoke is
14660         determined by the vtable displacement of the call.
14661
14662 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14663
14664         * mini.c, mini.h: register the common vtable trampoline if the
14665         architecture supports it.
14666
14667 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14668
14669         * cpu-amd64.md: use the correct max length for tls_get.
14670
14671 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14672
14673         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14674         CEE_STELEM_ANY. Fixes #333696.
14675
14676 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14677
14678         * exceptions-x86.c: provide more graceful handling of the case where
14679         we followed a bogus function pointer from managed code (bug #332866).
14680
14681 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14682
14683         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14684         replaces the generic_shared flag and will carry more information
14685         in the future.
14686
14687         * generic-sharing.c: Added mini_type_stack_size() which allows
14688         allows open types if given a generic sharing context.
14689         mini_get_basic_type_from_generic() takes a
14690         MonoGenericSharingContext* instead of a MonoCompile* now.
14691
14692         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14693         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14694         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14695         changes above.  Just passing arguments through to the right
14696         places.
14697
14698 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14699
14700         * mini-arm.c: unify the call emission to emit_code_seq().
14701
14702 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14703
14704         * tramp-arm.c: reduced the trampoline size.
14705
14706 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14707
14708         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14709         variable handling out of arch-specific code.
14710
14711 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14712
14713         * mini-arm.c: implemented fast delegate dispatch.
14714
14715 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14716
14717         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14718         that fp elimination is turned off if the space required by locals is too
14719         big. Fixes #331958.
14720
14721 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14722
14723         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14724         ARM to the new style trampoline.
14725
14726 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14727
14728         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14729
14730         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14731
14732 2007-10-09  Martin Baulig  <martin@ximian.com>
14733
14734         * debug-debugger.h
14735         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14736         `field_info_offset_offset'.     
14737
14738 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14739
14740         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14741         removed more internal usage of the r11 register and made it available
14742         to the register allocator.
14743
14744 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14745
14746         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14747         when sharing generics and treat type variables as references.
14748
14749 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14750
14751         * mini-ppc.c: started removing the internal uses of register r11
14752         to eventually allow the register allocator to manage it as an
14753         additional available register.
14754
14755 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14756
14757         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14758
14759 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14760
14761         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14762         specific trampolines as they are not performance critical as a jump
14763         target (maybe align as before only for AOT code?). This saves about
14764         200 KB of native code on x86 for monodevelop startup.
14765
14766 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14767
14768         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14769         monodevelop startup.
14770
14771 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14772
14773         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14774
14775         * mini-sparc.h mini-sparc.c: Implement IMT support.
14776
14777         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14778         its smaller and doesn't clobber sparc_g1.
14779
14780         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14781
14782 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14783
14784         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14785
14786 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini-ppc.c: implemented fast delegate invocation.
14789
14790 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14791
14792         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14793
14794 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14795
14796         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14797         code to the new style trampoline in preparation for IMT support.
14798
14799 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14800
14801         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14802         systems already. This also reduces the specific trampiline sizes and
14803         prepares for the use of r12 as the IMT identifier register.
14804
14805 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14806
14807         * mini-mips.h: endianess fix (simplified from a patch by
14808         Thomas Kunze <thommy@tabao.de>, bug #323737).
14809
14810 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14811
14812         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14813         to access ucontext fields and enable netbsd support
14814         (partially from Magnus Henoch <mange@freemail.hu>).
14815
14816 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14817
14818         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14819         use the preprocessor from the CPP env var if it is set.
14820
14821 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14822
14823         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14824         code, before interface_offset gets used.
14825
14826 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14827
14828         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14829         mono_class_setup_vtable () before accessing klass->vtable.
14830
14831 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14832
14833         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14834         hackish.
14835
14836 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14837
14838         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14839         IMT slots (this saves hundreds of KB of memory in programs like
14840         IronPython and Monodevelop).
14841
14842 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14843
14844         * mini.c: print the delegate counter.
14845
14846 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14847
14848         * mini-x86.c: make it easier to enable the debugging code for IMT
14849         slots.
14850
14851 2007-09-28  Martin Baulig  <martin@ximian.com>
14852
14853         * debug-debugger.h
14854         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14855         `mono_method_klass_offset' and `mono_method_token_offset'.
14856
14857 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14858
14859         * mini.c: First generics sharing implementation.  Can only share
14860         in very simple cases.  If sharing doesn't work it falls back to
14861         dedicated compilation.
14862
14863         * mini.h: Flag in MonoCompile to specify whether generic
14864         compilation is shared.  Flags enum for marking which generic inst
14865         of a context is used.  Prototypes for helper functions.
14866
14867         * generic-sharing.c: Helper functions for generic method sharing.
14868
14869         * optflags-def.h: Optimization flag (gshared) for enabling generic
14870         method sharing added.
14871
14872         * Makefile.am: generic-sharing.c added.
14873
14874 2007-09-19 Daniel Nauck <dna@mono-project.de>
14875
14876         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14877
14878 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14879         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14880         fixes bug 325507.
14881
14882 2007-09-19  Martin Baulig  <martin@ximian.com>
14883
14884         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14885         mono_debug_cleanup() is now part of mono_cleanup().
14886
14887 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14888
14889         * driver.c (mono_main): Fix a warning.
14890
14891 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14892
14893         * aot-compiler.c: Optimize various parts when processing large assemblies.
14894         Fixes ##325568.
14895
14896         * mini.c (mono_patch_info_hash): Improve hash function.
14897
14898 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14899
14900         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14901         
14902         Code is contributed under MIT/X11 license.
14903
14904 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14905
14906         * mini.c (mini_init): Fix a leak.
14907
14908         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14909
14910 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14911
14912         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14913
14914 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14915
14916         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14917
14918 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14919
14920         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14921         variance tests.
14922
14923         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14924
14925         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14926
14927         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14928
14929         * aot-runtime.c (decode_patch_info): Ditto.
14930
14931 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14932
14933         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14934         static case. Cache delegates in architecture specific code, 
14935         based on number of parameters.
14936         
14937         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14938         in architecture specific code, based on number of parameters.
14939         
14940         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14941         caching happen in architecture specific code now.
14942         
14943         Code is contributed under MIT/X11 license.
14944
14945 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14946
14947         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14948         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14949         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14950
14951         Code is contributed under MIT/X11 license.
14952
14953 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14954         * mini.c: (mono_thread_abort) Fixed bug #82416.
14955
14956 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14957
14958         * mini.: hook the new managed GC allocation feature into the JIT.
14959
14960 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14961
14962         * mini.c: implementation for the new runtime tls opcode.
14963
14964 2007-09-11  Martin Baulig  <martin@ximian.com>
14965
14966         * debug-debugger.h
14967         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14968         `mono_method_inflated_offset'.
14969
14970 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14971
14972         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14973         async exceptions into a method.
14974
14975         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14976         purpose of testing whenever the unwinder works at every instruction.
14977
14978 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14979
14980         * mini.c: check accessibility of method used in ldftn (fixes
14981         bug #82635).
14982
14983 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14984
14985         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14986
14987         * inssel.brg: Fix a warning.
14988
14989 2007-09-03  Martin Baulig  <martin@ximian.com>
14990
14991         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14992         now takes the `main_method' as argument.
14993
14994 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14995
14996         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14997
14998 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14999
15000         * driver.c: include the cil-coff.h header on Windows.
15001         
15002         Code is contributed under MIT/X11 license.
15003
15004 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15005
15006         * mini.c, driver.c: don't include the cil-coff.h header.
15007
15008 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15009
15010         * mini.c: flag places that needs fixes fo soft-float support.
15011
15012 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15013
15014         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15015         endian systems (partially from Dean Jenkins, bug #81924).
15016
15017 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15018
15019         * mini.c (check_linkdemand): Remove embedded reference object in
15020         call to LinkDemandSecurityException.
15021         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15022         with an IntPtr instead of a reference object.
15023
15024 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15025
15026         * mini.c (handle_initobj): Handle alignment properly.
15027
15028         * inssel.brg (mini_emit_memset): Ditto. 
15029
15030         * inssel.brg (mini_emit_memcpy): Ditto. 
15031
15032         * inssel-sparc.brg: Ditto.              
15033
15034         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15035
15036 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15037
15038         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15039         exceptions raised in unmanaged code. Fixes part of #82594.
15040
15041 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15042
15043         * mini.c (mono_method_to_ir), declsec.c
15044         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15045
15046 2007-08-22  Martin Baulig  <martin@ximian.com>
15047
15048         * debug-mini.h
15049         (MonoDebuggerThreadInfo): New typedef.
15050         (mono_debugger_thread_table): New global variable.
15051         (mono_debugger_thread_created): New public function.
15052         (mono_debugger_thread_cleanup): New public function.
15053
15054         * debug-debugger.h
15055         (MonoDebuggerInfo):
15056         - removed `get_current_thread' and `lookup_assembly'.
15057         - removed `data_table'.
15058         - added `thread_table'.
15059
15060         * mini.c
15061         (mono_thread_start_cb): Call mono_debugger_thread_created().
15062         (mono_thread_attach_cb): Likewise.
15063         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15064         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15065         initial domain.
15066
15067         * driver.c (mono_main): Move mono_debug_init() up, before calling
15068         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15069
15070 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15071
15072         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15073         together when passing several arguments of type double (gives a small
15074         speedup and saves a few bytes of generated code).
15075
15076 2007-08-20  Jb Evain  <jbevain@novell.com>
15077
15078         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15079
15080 2007-08-20  Jb Evain  <jbevain@novell.com>
15081
15082         * mini.c (mono_method_to_ir): throw MethodAccessException
15083         and FieldAccessException instead of InvalidProgramException.
15084
15085 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15086
15087         * mini.c: CoreCLR security checks.
15088
15089         * mini.h: Removed MonoSecurityMode (moved to
15090         metadata/security-manager.h) and mono_security_mode global var
15091         (replaced by set/get functions in security-manager.h).
15092
15093         * driver.c: Added "core-clr-test" security mode for testing.  Used
15094         set-function for setting security mode.
15095
15096 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15097
15098         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15099         the new jit_info_table.
15100
15101         * driver.c: Test code for the new jit_info_table (enabled by the
15102         define MONO_JIT_INFO_TABLE_TEST).
15103
15104 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15105
15106         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15107         detection of call <REG> instruction sequence. Fixes build on freebsd.
15108
15109 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15110
15111         * mini-exceptions.c: Fix a warning.
15112
15113 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15114
15115         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15116         stack overflow handling code on amd64 too.
15117
15118         * mini-exceptions.c (mono_setup_altstack): Make this use 
15119         mono_thread_get_stack_bounds ().
15120
15121         * mini-x86.h: Disable sigaltstack on solaris x86.
15122
15123 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15124
15125         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15126
15127 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15128
15129         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15130
15131 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15132
15133         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15134
15135         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15136
15137 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15138
15139         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15140         due to alignment.
15141
15142 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15143
15144         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15145         to be emitted (bug #82281).
15146
15147 2007-08-01  Martin Baulig  <martin@ximian.com>
15148
15149         Merged the `debugger-dublin' branch.
15150
15151         * debug-debugger.h (MonoDebuggerInfo):
15152         Removed the `old_*' compatibility entries.
15153         Added `debugger_version' and `data_table'.
15154         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15155         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15156
15157         * debug-mini.c
15158         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15159         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15160         instead of a `gconstpointer'.
15161         (mono_debugger_insert_method_breakpoint): Return a
15162         `MonoDebugMethodAddressList *'.
15163
15164 2007-06-28  Martin Baulig  <martin@ximian.com>
15165
15166         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15167
15168 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15169
15170         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15171         __builtin_frame_address () since it is broken on older gcc versions.
15172
15173 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15174
15175         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15176         on the stack overflow handling and made the managed stack overflows
15177         catchable in most cases using soft guard pages.
15178         * exceptions-x86.c: added code to restore the protection in the soft
15179         guard pages at the end of exception handling.
15180
15181 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15182
15183         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15184
15185 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15186
15187         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15188         exception handling.
15189
15190 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15191
15192         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15193         signal handling support until it has been ported to the new mechanism.
15194         * mini.c: fixed stack overflow detection and use the new
15195         architecture code  to handle signals on the altstack.
15196
15197 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15198
15199         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15200         stack overflows on the alt stack.
15201
15202 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15203
15204         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15205         stack overflows on the alt stack.
15206
15207 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15208
15209         * exceptions-ppc.c: cleanup preparing for altstack support.
15210
15211 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15212
15213         * exceptions-arm.c: cleanup preparing for altstack support.
15214
15215 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15216
15217         * mini.c (print_jit_stats): Output hazard pointer stats.
15218
15219 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15220
15221         * driver.c, mini.c: Replaced security mode flags with a single
15222         enum variable.
15223
15224 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15225
15226         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15227
15228 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15229
15230         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15231         (which doesn't do anything yet) for activating Core CLR
15232         (Silverlight) security.
15233
15234 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15235
15236         * mini-codegen.c: work around a possible gcc bug on arm.
15237
15238 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15239
15240         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15241         message for platforms that don't support AOT compilation.
15242
15243 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15244
15245         * mini.h, mini.c, driver.c: temporary smcs hack.
15246
15247 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15248
15249         * mini-arm.h, mini-arm.c: arm EABI fixes.
15250
15251 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15252
15253         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15254         case.
15255
15256         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15257         trampolines taking a method argument.
15258
15259         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15260
15261         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15262         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15263
15264         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15265         JIT compilation throws an exception. Fixes #82050.
15266
15267 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15268
15269         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15270         with the MONO_EXCEPTION_ defines.
15271
15272 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15273
15274         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15275         #82117.
15276         
15277         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15278         the cause of an assertion.
15279
15280 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15281
15282         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15283         removed.
15284
15285 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15286
15287         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15288         assert. Should fix #82103.
15289
15290 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15291
15292         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15293         here too. Fixes #82095.
15294
15295         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15296         addresses.
15297
15298         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15299
15300         * mini-amd64.h: Enable IMT for amd64.
15301         
15302         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15303
15304 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15305
15306         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15307
15308 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15309
15310         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15311         as soon as check_linkdemand sets an exception_type.
15312
15313 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15314
15315         * mini-x86.c: fixed offsets for IMT call sequence.
15316         * mini-x86.h: enable IMT again.
15317
15318 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15319
15320         * trace.c (mono_trace_enter_method): Decode MonoType too.
15321
15322         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15323
15324         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15325
15326         * mini-amd64.c: Add preliminary IMT implementation.
15327         
15328 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15329
15330         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15331         understand the new IMT-base interface invocation (thanks to
15332         Daniel Nauck for the report and the remote debugging session).
15333
15334 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15335
15336         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15337
15338 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15339
15340         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15341
15342 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15343
15344         * mini-trampolines.c: implement AOT IMT support.
15345         * mini-x86.h: enable IMT support for wider testing.
15346
15347 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15348
15349         * inssel.brg (emit_imt_argument): Add aot support here.
15350
15351         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15352
15353 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15354
15355         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15356         of the IMT implementation, partially from massi, with my
15357         implementation of the bsearch sequence. Disabled by default until
15358         the AOT code is implemented.
15359
15360 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15361
15362         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15363
15364         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15365
15366 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15367
15368         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15369         arch-independent IMT JIT code from Massimiliano
15370         Mantione (massi@ximian.com) with small cleanups from me.
15371
15372 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15373
15374         * Makefile.am: fix svn invocation to get the svn revision to be
15375         independent of the local language (build fix).
15376
15377 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15378
15379         * mini.c (inline_method): Reset cfg->exception_type if the
15380         inlining is aborted.  Fixes: 82049.
15381
15382 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15383
15384         * mini.c: remove assert from exception handling code when exception_ptr
15385         is not set.
15386
15387 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15388
15389         * mini.c (mono_codegen): Add an assert.
15390
15391         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15392         enter and leave code.
15393         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15394
15395 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15396
15397         * mini-ppc.c: fixed memory corruption for localloc(0)
15398         (bug #81852).
15399
15400 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15401         
15402         * mini.c: Fix warnings.
15403
15404 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15405
15406         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15407         to emit better double->int conversions.
15408
15409 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15410
15411         * mini.c: the provided Min/Max optimizations are valid for unisgned
15412         ints.
15413
15414 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15415
15416         * 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
15417
15418 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15419
15420         * mini.c (mono_running_on_valgrind): Add support for reporting the
15421         method and  its boundaries to valgrind.
15422
15423 2007-06-28  Martin Baulig  <martin@ximian.com>
15424
15425         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15426
15427 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15428
15429         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15430
15431         * generic.2.cs: Add new test case.
15432
15433 2007-06-25  Martin Baulig  <martin@ximian.com>
15434
15435         Merged the `debugger-dublin' branch.
15436
15437         * debug-mini.c
15438         (mono_debugger_insert_method_breakpoint): New public method.
15439         (mono_debugger_remove_method_breakpoint): Likewise.
15440         (mono_debugger_check_breakpoints): New static method.
15441         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15442
15443         * debug-debugger.h (MonoDebuggerInfo):
15444         Renamed (to keep backward compatibility in the vtable):
15445         `insert_breakpoint' -> `old_insert_breakpoint'.
15446         `remove_breakpoint' -> `old_remove_breakpoint'.
15447         `create_string' -> `old_create_string'.
15448         `lookup_class' -> `old_lookup_class'.
15449         `lookup_type' -> removed; changed into a dummy field.
15450         `lookup_assembly' -> `old_lookup_assembly'.
15451         Added (same functionality, but different signature):
15452         `create_string', `lookup_class', `lookup_assembly'
15453         Added new:
15454         `get_method_addr_or_bpt', `remove_method_breakpoint',
15455         `runtime_class_init'.
15456
15457         * debug-debugger.c: Merged the `debugger-dublin' branch.
15458
15459 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15460
15461         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15462         well.
15463         (peephole_pass): Likewise.
15464
15465 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15466
15467         * driver.c: hopefully make setaffinity work also for ancient
15468         versions of linux.
15469
15470 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15471
15472         * driver.c : win32 build fix.
15473
15474 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15475
15476         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15477         processor if it is set.
15478
15479 2007-06-21  Martin Baulig  <martin@ximian.com>
15480
15481         * debug-mini.h: New file.
15482
15483         * debug-mini.c
15484         (mono_debugger_insert_breakpoint_full): Moved here from
15485         ../metadata/mono-debug-debugger.c.
15486         (mono_debugger_remove_breakpoint): Likewise.
15487         (mono_debugger_breakpoint_callback): Likewise.
15488
15489 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15490
15491         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15492         changes in MonoGenericClass.
15493
15494 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15495
15496         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15497
15498 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15499
15500         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15501         removal of MonoGenericMethod.
15502
15503 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15504
15505         * mini-exceptions.c: hooks for the exception events profiling API.
15506
15507 2007-06-14  Randolph Chung  <tausq@debian.org>
15508
15509         * Makefile.ma: Add hppa target.
15510         * mini-arch.h: Include mini-hppa.h
15511         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15512         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15513         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15514
15515 2007-06-14  Randolph Chung  <tausq@debian.org>
15516
15517         * inssel.brg: Add rules for "chained" compare-branch operations so that
15518         a single compare op can affect multiple branches.  Adjust cost for
15519         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15520         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15521         cost for some rules so that they can more easily be overridden by
15522         per-arch rules (with fixes from lupus).
15523         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15524
15525 2007-06-13  Randolph Chung  <tausq@debian.org>
15526
15527         * mini-ops.h: Reorder branch ops so that they match the order of the
15528         corresponding CEE_* ops.  The code expects them this way.
15529         Add new ops for HPPA target.
15530         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15531
15532 2007-06-13  Randolph Chung  <tausq@debian.org>
15533
15534         * mini-exceptions.c: Handle cases where the stack grows towards
15535         larger addresses.
15536         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15537
15538 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15539
15540         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15541         counter.
15542         * driver.c: explain where a non-matching corlib is found.
15543
15544 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15545
15546         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15547
15548 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15549
15550         * mini-exceptions.c: Generate a method profile leave event during
15551         an exception to ensure that the profiler gets notified.
15552
15553 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15554
15555         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15556         branch.
15557
15558         * cpu-amd64.md: Add long_and/or/xor opcodes.
15559
15560 2007-06-06  Wade Berrier  <wberrier@novell.com>
15561
15562         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15563         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15564         length of instruction shr_imm (expected 8, got 10)
15565
15566 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15567
15568         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15569
15570 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15571
15572         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15573         MonoInternalHashTable again (fixed bug in the internal hash table
15574         code).
15575
15576 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15577
15578         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15579         Have to figure out what makes it crash the SWF regression.
15580
15581 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15582
15583         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15584
15585 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15586
15587         * mini.c: optimize out the type check when storing null in a
15588         reference array.
15589
15590 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15591
15592         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15593         MonoInternalHashTable.
15594
15595 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15596
15597         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15598         signed integer methods.
15599
15600 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15601
15602         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15603         permanently since the current approach doesn't work.
15604
15605 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15606
15607         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15608         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15609
15610 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15611
15612         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15613         the sreg2==rdx case.
15614         
15615         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15616         account if it contains a rex prefix.
15617         (peephole_pass): Handle OP_FMOVE as well.
15618
15619 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15620
15621         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15622         as it causes regressions.
15623
15624 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15625
15626         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15627         static case as well.
15628
15629         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15630
15631         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15632         (mono_arch_get_this_arg_from_call): Ditto.
15633
15634         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15635
15636         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15637         invoke_impl field.
15638
15639         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15640         (mono_arch_get_this_arg_from_call): Ditto.
15641
15642         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15643         
15644         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15645         try to create optimized invoke code and use that for further invocations. 
15646         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15647
15648         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15649
15650 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15651
15652         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15653         sealed classes or methods.
15654         *devirtualization.cs: tests for the new optimization
15655
15656 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15657
15658         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15659         by the update_volatile () function.
15660
15661 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15662
15663         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15664         require it.
15665
15666         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15667
15668 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15669
15670         * mini.c: Add configure checks for header files.
15671         * mini-x86.c: Add configure checks for header files.
15672         * trace.c: Add configure checks for header files.
15673         * aot-runtime.c: Add configure checks for header files.
15674         * aot-compiler.c: Add configure checks for header files.
15675         * driver.c: Add configure checks for header files.
15676         * mini-codegen.c: Add configure checks for header files.
15677         
15678         Code is contributed under MIT/X11 license.
15679
15680 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15681
15682         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15683         icompare_imm -128 + op_iclt. Fixes #81703.
15684
15685 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15686
15687         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15688
15689 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15690
15691         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15692         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15693         so that all isinst checks now use "interface_bitmap".
15694
15695 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15696
15697         * cpu-amd64.md (jmp): Fix a warning.
15698
15699         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15700
15701         * basic.cs: Add new regression test.
15702
15703         * basic.cs: Remove test which is now in basic-long.cs.
15704
15705         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15706
15707         * basic-long.cs: Add new test.
15708         
15709 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15710
15711         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15712
15713 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15714
15715         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15716
15717         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15718         places.
15719         
15720         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15721         throwing code a bit.
15722
15723         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15724         the exception throwing code a bit.
15725
15726         * mini-x86.c (get_call_info): Allocate result from a mempool.
15727
15728 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15729
15730         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15731
15732         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15733
15734         * mini.h (MonoCompile): Add 'token_info_hash' field.
15735
15736         * mini.c: Save token->method associations during compilation so the AOT 
15737         compiler can use it.
15738         
15739         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15740         which reference generic classes and methods.
15741
15742 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15743
15744         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15745
15746         * aot-compiler.c (compile_method): Fix a typo in a comment.
15747
15748         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15749
15750         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15751         everything generic.
15752
15753         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15754
15755 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15756
15757         * mini.h (MonoCompile): Add 'args' field.
15758
15759         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15760         into cfg->args.
15761
15762         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15763
15764 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15765
15766         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15767
15768         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15769
15770         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15771         opcodes for some opcodes.
15772
15773         * mini.h *.brg *.c: Use the new opcodes.
15774
15775 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15776
15777         * mini.h: Bumped aot revision.
15778
15779         * inssel.brg: modified code generation of type checks for interfaces
15780         to use the new "MonoClass.interface_bitmap" instead of the old
15781         "MonoClass.interface_offsets".
15782
15783 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15784
15785         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15786
15787 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15788
15789         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15790         64 bit platforms.
15791
15792 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15793
15794         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15795
15796 2007-04-27  Wade Berrier  <wberrier@novell.com>
15797
15798         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15799         mini.h) to fix build.
15800
15801 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15802
15803         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15804         
15805         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15806         causes the corlib unit tests to fail.
15807
15808 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15811
15812         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15813
15814         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15815         opcodes to the comparison relations.
15816
15817         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15818         opcodes to their types.
15819         
15820         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15821
15822         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15823         it in cfg->arch.cinfo.
15824
15825         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15826
15827         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15828         cfg->cil_offset_to_bb.
15829
15830 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15831
15832         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15833         created becase of initlocals.
15834
15835 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15836
15837         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15838         Sergey Tikhonov <tsv@solvo.ru>.
15839
15840 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15841
15842         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15843
15844 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15845
15846         * cpu-s390.md (break): Correct the length of break instruction.
15847
15848 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15849
15850         * mini.c: fix a couple of soft-float issues and comments.
15851
15852 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15853
15854         * trace.c (is_filenamechar): - is also a filename char.
15855
15856 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15857
15858         * mini-s390.c: Correct checking for enum type in return value processing.
15859
15860 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15861
15862         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15863         (version.h): Makefile is in the build directory.
15864
15865 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15866
15867         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15868
15869 2007-04-11  Martin Baulig  <martin@ximian.com>
15870
15871         * mini.c (can_access_member): Fix handling of generic classes;
15872         fixes #81259.
15873
15874 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15875
15876         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15877
15878 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15879
15880         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15881
15882 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15883
15884         * mini-codegen.c: make sure the right spill amount is
15885         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15886
15887 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15888
15889         * mini-ppc.c: fixes for the fp_branch_nan test.
15890
15891 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15892
15893         * basic.cs: Comment out new test which still fails on ia64.
15894
15895 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15896
15897         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15898
15899 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15900
15901         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15902
15903 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15904
15905         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15906         on 64 bit machines. Fixes part of #80738.
15907
15908         * basic.cs: Add regression test.
15909
15910 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15911
15912         * inssel.brg basic.cs: Revert previous change to fix build.
15913
15914         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15915         platforms.
15916         
15917         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15918
15919         * basic.cs: Add new regression test.
15920
15921 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15922
15923         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15924         many arguments.
15925
15926 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15927
15928         * cpu-s390x.md: Correct length of break instruction.
15929
15930 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15931
15932         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15933         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15934
15935 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15936
15937         * *.c: Begin WIN64 port.
15938         * mini.c:  Use correct register in profiler.
15939         * mini-amd64.c: No inline assembly on Win64.
15940         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15941         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15942         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15943         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15944         mono_arch_ip_from_context for Win64.
15945         
15946         Contributed under MIT/X11 license.
15947
15948 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15949
15950         * exceptions-amd64.c (seh_handler): Ditto.
15951
15952         * exceptions-x86.c (seh_handler): Fix a memory leak.
15953
15954 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15955
15956         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15957         mini-s390x.c: fixed peephole optimizations to deal
15958         correctly with 1 and 2 byte reload avoidance.
15959
15960 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15961
15962         * cpu-s390.md, cpu-s390x.md: update localloc length.
15963
15964 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15965
15966         * cpu-g4.md: added missing descriptions.
15967
15968 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15969
15970         *  Makefile.am: Add support so the tail tests are not executed on
15971         PowerPC as that is a known limitation of the PowerPC port.
15972
15973 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15974
15975         * runmdesc.bat:  Move to msvc directory.
15976         
15977 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15978
15979         * runmdesc.bat:  Run executable that was produced by the current
15980         target and sent via an argument.
15981         
15982 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15983
15984         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15985         #81102.
15986
15987         * generics.2.cs: Add regression test.
15988
15989 2007-03-09  Wade berrier  <wberrier@novell.com>
15990
15991         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15992
15993 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15994
15995         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15996         AOT code depends on this.
15997
15998 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15999
16000         * mini.c: more precise tracking of types in the eval stack
16001         (part of fix for bug #81044).
16002
16003 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16004
16005         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16006
16007         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16008
16009 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16010
16011         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16012
16013         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16014
16015 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16016
16017         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16018         a pointer on 64 bit systems. Fixes #80190.
16019
16020         * iltests.il: Add new regression test.
16021
16022 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16023
16024         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16025
16026 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16027
16028         * trace.c: Remove an erroneous alignemnt check when tracing.
16029           Fixes --trace on OSX86.
16030
16031 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16032
16033         * mini-$(arch).h: initialize SP in context for all the archs.
16034
16035 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16036
16037         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16038         regressions in the thread tests.
16039
16040 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16041
16042         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16043         - fixed implementation of LOCALLOC opcode
16044         - implemented non-un compare for floats
16045         - code cleanup
16046         - implementation of FDIV and CKFINITE opcodes
16047         - fixes for latest mono updates
16048         - additional arch opcodes
16049
16050 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16051
16052         * Makefile.am: simplify and merge rules for cross-compilation.
16053
16054 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16055
16056         * local-propagation.c: Actually *apply* the fix for bug 80591...
16057
16058 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16059
16060         * mini-exceptions.c: backuot part of the last change
16061         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16062
16063 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16064         * inssel.brg: Fix bug 59286.
16065
16066
16067 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16068
16069         * mini-exceptions.c: patch from Zoltan to correctly check for
16070         stack boundaries (using the stack register, not the frame register),
16071         fixes bugs #80724, #79717.
16072
16073 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16074
16075         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16076         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16077
16078         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16079         presence of frame pointer elimination.
16080
16081 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16082         
16083         * mini-x86.h: NetBSD UCONTEX_REG defines.
16084
16085 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16086
16087         * inssel-amd64.brg: Fix amd64 build.
16088
16089 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16090
16091         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16092         on amd64.
16093
16094 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16095
16096         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16097         ends.
16098
16099         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16100
16101 2007-01-30 Mark Mason <mason@broadcom.com>
16102
16103            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16104            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16105            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16106            beginning support for CEE_JMP [not quite working yet]
16107            * tramp-mips.c: LMF handling now works
16108         
16109 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16110
16111         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16112
16113         * mini.h (NULLIFY_INS): New macro.
16114
16115 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16116
16117         * mini.c: statistical profiler fix for windows, patch
16118         from Tor Lillqvist (tml@novell.com).
16119
16120 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16121         * local-propagation.c: Fix bug 80591.
16122
16123 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16124
16125         * Makefile.am: put back the --export-dynamic option as with
16126         the previous gmodule flags (thanks to Robert Jordan).
16127
16128 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16129
16130         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16131
16132         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16133         simplify and speed up the local register allocator. Also rename some fields
16134         like iassign->vassign.
16135         
16136         * regalloc.c: Remove some functions which are no longer used since their
16137         inlined version is in mini-codegen.c.
16138         
16139         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16140
16141         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16142
16143 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16144
16145         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16146         narrowing. Fixes #80622.
16147
16148         * iltests.il: Add new regresssion test. 
16149
16150 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16151
16152         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16153         debug-debugger.c, debug-debugger.h: warning fixes.
16154         * driver.c: updated copyright year and made it fit in one line.
16155
16156 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16157
16158         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16159
16160 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16161
16162         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16163
16164         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16165
16166         * iltests.il: Add new test for bug #80507.
16167
16168 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16169
16170         * mini-arm.h: use soft-float also on vfp for now.
16171
16172 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16173
16174         * mini.c: fix some more soft-float issues.
16175
16176 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16177
16178         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16179
16180 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16181         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16182         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16183         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16184
16185 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16186
16187         * mini-arm.c: typo fix.
16188
16189 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16190
16191         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16192
16193 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16194
16195         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16196         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16197
16198         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16199
16200         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16201
16202         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16203         
16204         * inssel.brg: Fix a warning.
16205
16206         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16207
16208         * abcremoval.c ssa.c ssapre.c: Update after this change.
16209         
16210         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16211
16212         * dominators.c (df_set): Use mono_bitset_union_fast.    
16213
16214 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16215
16216         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16217         mini-codegen.c: reduce relocations and memory usage for the cpu
16218         description.
16219
16220 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16221
16222         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16223
16224         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16225         to reduce their size.
16226
16227 2007-01-19 Mark Mason <mason@broadcom.com>
16228
16229         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16230         * mini-mips.c: more configuration macros, support long conditional branches, additional
16231         asserts, fix epilog instrumentation.
16232         * mini-mips.h: use standard stack walk
16233         * cpu-mips.md: increase size of div, rem and conditional branches
16234         
16235 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16236
16237         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16238         to cpu spec data.
16239
16240 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16241
16242         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16243         (compile_method): Ditto.
16244
16245         * aot-runtime.c (decode_klass_info): Ditto.
16246
16247         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16248         needed by the code generated by inssel.brg. Also fix a warning.
16249
16250 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16251
16252         * mini.c: deal with enums that become genericinsts by
16253         being nested in a generic class (bug #79956).
16254
16255 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16256
16257         * mini.c: match the generic definition to check for
16258         private access with generic types (bug #78431).
16259
16260 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16261
16262         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16263         to make life easier for people cross-compiling that insist on not
16264         using scratchbox.
16265
16266 2007-01-17 Mark Mason <mason@broadcom.com>
16267
16268         * inssel-long.brg: patch to deal with mips missing flags
16269         * inssel-long32-mips.brg: implement overflow checks
16270         * insset-mips.brg: implement overflow checks
16271         * mini-mips.h: implement conditional exception handling
16272         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16273           Remove unused code, minor cleanups.
16274         * exceptions-mips.c: minor cleanups
16275         * mini-ops.h: add mips conditional exception ops
16276         * cpu-mips.md: add mips conditional exception ops
16277
16278         
16279 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16280
16281         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16282         to deal with mips missing of flags.
16283
16284 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16285
16286         * exceptions-ppc.c: execute fault handlers.
16287
16288 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16289
16290         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16291
16292 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16293
16294         * mini.c: handle also floating point values in initialize_array.
16295
16296 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16297
16298         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16299         array initialization and make it conditional on the intrins option.
16300
16301 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16302
16303         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16304         relocations and put the patch info names close to the enum definition.
16305
16306 2007-01-15 Mark Mason <mason@broadcom.com>
16307
16308         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16309
16310 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16311
16312         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16313
16314 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16315
16316         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16317
16318 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16319
16320         * Makefile.am: distribute the mips sources.
16321
16322 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16323
16324         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16325         directly.
16326
16327 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16328
16329         * cpu-x86.md: back out for now as this triggers other regressions.
16330
16331 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16332
16333         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16334         to eax:edx, so ecx can't get allocated to them (bug #80489).
16335
16336 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16337
16338         * mini.c, mini-exceptions.c: enabled running fault handlers
16339         (bug #80469).
16340
16341 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16342
16343         * driver.c: If nothing fail, do not use the string "failed",
16344         because it makes it very annoying to view test result logs on the
16345         web. 
16346
16347 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16348
16349         * debug-debugger.c (mono_debugger_main): Rename "main" to
16350         "main_method" to prevent a warning.
16351
16352         Remove a warning for unused field.
16353
16354 2006-12-28  Martin Baulig  <martin@ximian.com>
16355
16356         * debug-debugger.c
16357         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16358
16359 2006-12-22  Martin Baulig  <martin@ximian.com>
16360
16361         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16362         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16363         seperate `.mdb_debug_info' section, so we can access it from the
16364         debugger even if the binary is stripped.
16365
16366         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16367         from the `.mdb_debug_info' here to prevent the linker from
16368         removing that section.
16369
16370         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16371         mdb-debug-info64.s.
16372
16373 2006-12-19  Robert Jordan  <robertj@gmx.net>
16374
16375         * mini-x86: enable the code to return small structures in
16376         registers for FreeBSD as well. Fixes bug #80278.
16377         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16378
16379 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16380
16381         * mini-x86.c: align the stack when calling the profiler
16382         function instrumenting the prolog (on OSX).
16383
16384 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16385
16386         * mini.c: emit a break opcode where Debugger.Break () is called.
16387
16388 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16389
16390         * mini.c (mono_method_to_ir): Provide useful information on this
16391         assert, to prevent others from debugging like I did.
16392
16393 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16394
16395         * mini.c: enable code which was incorrectly commented
16396         (bug #80235).
16397
16398 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16399
16400         * mini-x86.c: enable on OSX, too, the code to return small
16401         structures in registers.
16402
16403 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16404
16405         * mini-x86.c: remove the use of the dynamic code manager here, too.
16406
16407 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16408
16409         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16410         mono_debugger_create_notification_function() to use
16411         mono_global_codeman_reserve () instead of a dynamic code manager.
16412
16413 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16414
16415         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16416         ves_array_element_address() jit icall and use a generated
16417         managed method instead (which is about 4 times faster for a rank 3
16418         array access).
16419
16420 2006-11-29  Mark Mason  <mason@broadcom.com>
16421
16422         * basic-calls.cs: additional tests for passing
16423         structures as function arguments.
16424
16425 2006-11-29  Mark Mason  <mason@broadcom.com>
16426
16427         * mini-mips.h: disable custom exception handling
16428         * mini-mips.c: throw/rethrow should use jalr to call
16429         exception stubs.  Fixed bug with passing structures
16430         by value. More support for tracing floating point
16431         functions.
16432
16433 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16434
16435         * mini.c: fixed typo in the soft-float ldind.r4 handling
16436         (bug #80086).
16437
16438 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16439
16440         * mini.c, mini.h, driver.c: added --runtime command line
16441         option to select a different runtime than the autodetected one.
16442         * jit.h: added API for embedders to initialize with a specific
16443         runtime version.
16444
16445 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16446
16447         * mini.c: handle also boxing of r4 values (bug #80024).
16448
16449 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16450
16451         * mini-ppc.c: force indirect calls until we reserve
16452         enough address space for all the generated code.
16453
16454 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16455
16456         * exceptions-arm.c: workaround bugs in the libc definition
16457         of struct ucontext.
16458
16459 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16460
16461         * inssel.brg: fixes from me and Mark Mason.
16462
16463 2006-11-23  Dick Porter  <dick@ximian.com>
16464
16465         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16466         semaphore display now we've fixed the initial value
16467
16468 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16469
16470         * inssel.brg: partially revert the last change to fix the build.
16471
16472 2006-11-21  Mark Mason  <mason@broadcom.com>
16473
16474         * inssel.brg: Add and use compare-and-branch macros to support
16475         architectures that do not have condition code registers (ie. MIPS).
16476         * *-mips.{c,brg,md}: Fix copyright statements
16477
16478 2006-11-20  Mark Mason  <mason@broadcom.com>
16479
16480         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16481         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16482         * mini.h: Added declaration for mono_print_ins()
16483         * mini-codegen.c: added ins_spec initializer for MIPS
16484         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16485         vreg to be virtual and hreg to be non-virtual.
16486         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16487         is not yet working/implemented correctly.
16488         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16489         non-static, fixup calls to print_ins() from other parts in the file.
16490
16491 2006-11-20  Mark Mason  <mason@broadcom.com>
16492
16493         * basic-calls.cs: added tests for passing structures as arguments
16494         to calls.
16495
16496 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16497
16498         * inssel-long32.brg: optimize signed division by power of two.
16499
16500 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16501
16502         * mini-arm.c: added support for interworking with thumb code
16503         (mono must be still be built using the ARM instruction encoding).
16504
16505 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16506
16507         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16508         verifier has different rules for it.   Fixes a few verifier issues
16509         in the test suite.
16510
16511         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16512         at the end, so people know what happened.
16513
16514 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16515
16516         * brach-opts.c: in optimize_exception_target() make sure we
16517         are in a catch clause (fixes bug #79871).
16518
16519 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16520
16521         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16522         more soft-float support fixes.
16523
16524 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16525
16526         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16527         that are passed half on the stack and half in registers.
16528
16529 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16530
16531         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16532         more mips integration work from Mark E Mason 
16533         <mark.e.mason@broadcom.com>.
16534
16535 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16536
16537         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16538         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16539         tramp-mips.c: added sources for the mips port, not
16540         integrated in the build yet. Contributed by
16541         Mark E Mason <mark.e.mason@broadcom.com>.
16542
16543 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16544
16545         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16546
16547 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16548
16549         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16550         put the soft-float rules in its own file since it seems to
16551         break s390 compilation.
16552
16553 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16554
16555         * mini-arm.c: fixed wrnings.
16556
16557 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16558
16559         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16560         inssel-arm.brg: ARM support for soft-float.
16561
16562 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16563
16564         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16565         loads and stores of 32 bit fp values.
16566
16567 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16568
16569         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16570
16571         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16572         works. Fixes #79852 and #79463.
16573
16574 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16575
16576         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16577         more soft-float support WIP and fixes.
16578
16579 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16580
16581         * mini-arm.c: some VFP updates.
16582
16583 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16584
16585         * mini-exceptions.c: 0 is a valid local var offset in some
16586         architectures, don't assert (bug #78508).
16587
16588 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16589
16590         * exceptions-arm.c: fixed off by one error in stack walk code.
16591
16592 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16593
16594         * mini.h, mini.c: more precise tracking of type load exceptions.
16595
16596 2006-11-03  Robert Jordan  <robertj@gmx.net>
16597
16598         * Makefile.am: [WIN32] Add monow.exe target.
16599         * driver.c: [WIN32] Don't detach the console when debugging.
16600         Fixes bug #79797.
16601         
16602 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16603
16604         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16605
16606 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16607
16608         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16609
16610         * driver.c (mini_regression): Fix --regression with AOT.
16611
16612         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16613
16614 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16615
16616         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16617
16618         * mini-sparc.h: Don't use sigaction on sparc/linux.
16619
16620         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16621
16622         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16623
16624         * mini-exceptions.c: Add proper include files for getpid ().
16625
16626 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16627
16628         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16629         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16630         method.
16631
16632         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16633         name cache to reduce its size.
16634
16635         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16636
16637 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16638
16639         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16640         the mono_lmf TLS variable.
16641
16642         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16643         trampoline lmf frames.  
16644
16645         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16646
16647 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16648
16649         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16650         the mono_lmf TLS variable.
16651
16652         * mini-exceptions.c: Access the LMF structure through accessors.
16653
16654         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16655         variable instead of in jit_tls->lmf.
16656
16657         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16658         
16659         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16660         trampoline lmf frames.
16661
16662         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16663
16664 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16665
16666        * mini.c trace.c mini-x86.c: Revert these too.
16667         
16668        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16669        signature change.
16670
16671 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16672
16673         * genmdesc.c: removed now dead code.
16674
16675 2006-10-09  Robert Jordan <robertj@gmx.net>
16676
16677         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16678
16679 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16680
16681         * mini.h: do not leave gaps in the opcode values.
16682
16683 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16684
16685         * jit-icalls.h: flag functions as internal here, too.
16686
16687 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16688
16689         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16690         functions with the internal attribute.
16691
16692 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16693
16694         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16695
16696 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16697
16698         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16699         for soft-float.
16700
16701 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16702
16703         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16704         tail calls as on other platforms.
16705
16706         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16707
16708         * iltests.il: Add a few tailcall tests.
16709
16710 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16711
16712         * driver.c: fix loop for old compilers (bug #79521).
16713
16714 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16715
16716         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16717
16718         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16719
16720         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16721         metadata without any code.
16722
16723         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16724         more precise debugging information using gdb.
16725
16726 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16727
16728         * inssel-ia64.brg: Make the helper methods static.
16729
16730 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16731
16732         * inssel-x86.brg: make the helper methods static.
16733
16734 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16735
16736         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16737
16738 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16739
16740         * mini.c: updates for monoburg changes.
16741         * inssel.brg: make a few helper functions static as they should.
16742
16743 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16744
16745         * Makefile.am: Move mini-codegen.c to common_sources.
16746
16747 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16748
16749         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16750         instructions.
16751         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16752         mini-ppc.h: port to use the common local register allocator.
16753
16754 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16755
16756         * mini.h: Remove the comment too then.
16757
16758 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16759
16760         * mini.h: put back backend.data which is to be used shortly and
16761         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16762         pointers on 4 byte boundaries it'd have much bigger issues running
16763         and you can ifdef it out anyway.
16764
16765 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16766
16767         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16768         MonoInst size by 4 bytes on 64 bit machines.
16769
16770 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16771
16772         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16773         replacement with more meaningful field names. Arch maintainers, please
16774         check the assigned names are good enough for your arch.
16775
16776 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16777
16778         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16779         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16780
16781 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16782
16783         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16784         relocations and memory requirements, put the optimization flags
16785         definitions in their own file.
16786
16787 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16788
16789         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16790
16791         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16792
16793 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16794
16795         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16796
16797 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16798
16799         * inssel.brg: use the correct function to get the size of an item
16800         in an array, given an element class.
16801         * aot-compiler.c: do not access class->class_size directly.
16802
16803 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16804
16805         * mini.h, debug-mini.c: added a debugging function to print
16806         info about local variables and arguments in a jitted method.
16807
16808 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16809
16810         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16811
16812         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16813
16814 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16815
16816         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16817         inner and outer loops when passing vtypes.
16818
16819 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16820
16821         * mini-ppc.c: take into account the cpu errata for cache flushing
16822         which caused some random errors (bug #79381).
16823
16824 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16825
16826         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16827         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16828
16829 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16830
16831         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16832         loaded.
16833
16834         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16835         freebsd ports tree.
16836
16837         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16838         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16839
16840         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16841         displacement.
16842
16843 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16844
16845         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16846
16847 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16848
16849         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16850         macro does not have to be changed during debugging.
16851
16852         * 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>.
16853
16854         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16855
16856         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16857         
16858         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16859         MONO_ARCH_NO_EMULATE_MUL is defined.
16860
16861         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16862
16863         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16864
16865         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16866
16867         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16868         
16869 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16870
16871         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16872         stuff to mini-exceptions.c where it is used.
16873
16874         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16875         setup code, the real one is in mini-exceptions.c.
16876
16877         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16878         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16879         some changes from the freebsd ports tree.
16880
16881         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16882         constants.
16883         
16884         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16885
16886 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16887
16888         * mini.c: on Linux, check for /proc to be mounted
16889         (bug# 79351, novell bug#201204).
16890
16891 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16892
16893         * mini.c: handle cases where pthread_attr_getstack() behaves
16894         incorrectly (bug #78096).
16895
16896 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16897
16898         * mini-arm.c: support larger stack frames (bug #79272).
16899
16900 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16901
16902         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16903
16904         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16905         tokens.
16906
16907         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16908         mono_class_from_name () to find a class from its name.
16909
16910         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16911
16912 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16913
16914         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16915
16916 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16917
16918         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16919
16920 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16921
16922         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16923         callinfo->trampoline.
16924
16925         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16926         fixes #79271.
16927         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16928         future.
16929
16930 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16931
16932         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16933
16934 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16935
16936         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16937         stats.method_trampolines, it is already done by the generic trampoline code.
16938
16939         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16940         
16941 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16942
16943         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16944
16945         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16946
16947         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16948
16949         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16950         
16951         * mini.c (print_jit_stats): Print new stats.
16952
16953         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16954
16955 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16956
16957         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16958         Address on two dimensional arrays. Fixes #78729.
16959
16960         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16961
16962         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16963         a method.
16964
16965         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16966
16967         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16968         #79130.
16969         
16970         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16971         a race condition.
16972         (mini_get_ldelema_ins): Ditto.
16973
16974 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16975
16976         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16977         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16978         Fixes #79213.
16979
16980 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16981
16982         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16983         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16984
16985         * exceptions-s390x.c: Cosmetic change.
16986
16987         * tramp-s390.c: Fix warning.
16988
16989         * cpu-s390.md: Correct length of mul_imm.
16990
16991 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16992
16993         * aot-compiler.c: added binary writer with ELF backend
16994         implementation (only on Linux/x86 for now).
16995
16996 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16997
16998         * Makefile.am: Don't run net 2.0 AOT tests.
16999
17000         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17001         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17002
17003         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17004
17005 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17006
17007         * aot-compiler.c: simplified and refactored the asm-writing code
17008         to allow different backends.
17009
17010 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17011
17012         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17013
17014         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17015         little. Share patches of type TYPE_FROM_HANDLE as well.
17016
17017         * mini.c (mono_patch_info_equal): New helper function.
17018         (mono_patch_info_hash): Ditto.
17019
17020         * aot-compiler.c (emit_method_code): Fix s390 build.
17021
17022         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17023         is not handled because it is stored as a flag and not as a type ctor. Fixes
17024         #79016.
17025
17026 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17027
17028         * aot-compiler.c: Fix computation of GOT slot statistics.
17029         
17030         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17031         Also remove support for not PIC AOT.
17032
17033         * mini.h: Bump AOT file format version.
17034
17035         * objects.cs: Add a test for #78990.
17036
17037         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17038         (peter.dettman@iinet.net.au). Fixes #79087.
17039
17040         * basic-long.cs: Add a test for the above.
17041
17042 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17043
17044         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17045         
17046         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17047         code somewhat.
17048
17049 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17050
17051         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17052         exceptions.
17053
17054 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17055
17056         * mini.c: Don't verify COM proxy invoke calls
17057         
17058
17059 2006-08-10  Dick Porter  <dick@ximian.com>
17060
17061         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17062         which process is holding semaphores locked.
17063
17064 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17065
17066         * mini-ia64.c mini-amd64.c: Fix #79027.
17067
17068         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17069
17070         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17071
17072         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17073         implicit arguments in a vararg call. Fixes #79027.
17074
17075 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17076
17077         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17078         (mono_get_array_new_va_signature): Ditto.
17079
17080 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17081
17082         * aot-runtime.c: Call init_plt lazily.
17083
17084         * inssel-long.brg: Fix unsigned long->int conversion.
17085
17086         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17087
17088         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17089         that most data is now in the .rss/.data section.
17090
17091 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17092
17093         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17094
17095         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17096
17097         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17098
17099         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17100
17101         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17102         virtual call. Fixes #79010.
17103
17104         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17105         and use the result as the this argument in the real call.
17106
17107         * generics.2.cs: Add a new test for #79010.
17108         
17109 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17110
17111         * mini-x86.c: Fix a warning.
17112
17113         * aot-compiler.c: Add a bunch of statistics.
17114
17115         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17116
17117 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17118
17119         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17120
17121 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17122
17123         * 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>.
17124
17125 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17126
17127         * mini.c (mono_method_to_ir): Obtain the original method in the
17128         CIL stream and use this to perform validation.
17129
17130         Fixed: #78816
17131
17132 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17133
17134         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17135         (mono_arch_call_opcode): Ditto.
17136
17137         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17138         #78826.
17139
17140         * mini.c (mono_patch_info_dup_mp): New helper function.
17141         
17142         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17143         compilation. Fixes #78827.
17144
17145 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17146
17147         * declsec.c: Use original security informations for
17148           MONO_WRAPPER_MANAGED_TO_MANAGED.
17149
17150 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17151
17152         * mini.c: Allow Com Interop methods/classes and
17153         don't verify COM wrapper calls
17154         
17155
17156 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17157
17158         * inssel-long32.brg: Fix long->i4 checked conversion.
17159
17160         * exceptions.cs: Add a test for the above.
17161
17162 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17163
17164         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17165
17166         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17167         leaks.
17168
17169         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17170         #78775.
17171
17172 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17173
17174         * mini.c: Fix solaris/x86 exception handling.
17175
17176         * Makefile.am: Get rid of $(ICU_LIBS).
17177
17178 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17181         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17182         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17183
17184         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17185
17186         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17187         this function causes a SIGSEGV.
17188
17189 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17190
17191         * mini.c: Remove unused solaris/x86 includes.
17192
17193 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17194
17195         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17196
17197 2006-06-20  Jb Evain  <jbevain@gmail.com>
17198
17199         * cpu-g4.md: fix max length of start_handler instruction.
17200
17201 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17202         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17203
17204 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17205         * ssa.c: Fixed bug 78653 for SSA based deadce.
17206         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17207         MonoInst.flags, used in SSA based deadce.
17208         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17209         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17210
17211 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17212
17213         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17214         it can end up using non executable memory on ppc64 systems
17215         running ppc32 userspace (fix from Johannes Berg).
17216
17217 2006-06-14  Dick Porter  <dick@ximian.com>
17218
17219         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17220         4.1.1
17221
17222 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17223         * mini.c: Made so that inline is locally disabled if it would
17224         trigger a .cctor, because too many apps depend on this behavior
17225         (which seems to be also the one of the MS CLR).
17226
17227 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17228
17229         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17230         No idea why this worked before.
17231
17232         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17233         which branch to outer exception clauses since they could skip the
17234         inner finally clauses. Fixes #78633.
17235
17236         * exceptions.cs: Add a test for the above.
17237
17238         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17239         Fixes #78629.
17240
17241         * iltests.il: Add a test for the above.
17242
17243 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17244
17245         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17246         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17247
17248         * iltests.il: Add a test for the above.
17249
17250 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17251
17252         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17253         
17254         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17255         methods as instrinsics.
17256
17257 2006-06-09  Wade Berrier <wberrier@novell.com>
17258
17259         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17260         (simple-cee-ops.h ssapre-mini-ops.h)
17261
17262 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17263
17264         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17265         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17266         instruction).
17267         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17268         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17269
17270 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17271
17272         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17273
17274 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17275
17276         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17277         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17278         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17279         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17280         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17281         of opcodes, so that bug 78549 should not happen again.
17282         * ssapre.c: Updated to use the renamed files.
17283
17284 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17285
17286         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17287         in OP_ATOMIC_EXCHANGE_I4.
17288
17289 2006-06-07  Wade Berrier <wberrier@novell.com>
17290
17291         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17292         in mono_debugger_create_notification_function)
17293
17294 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17295
17296         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17297         
17298         * mini.c (type_from_stack_type): Disable some changes which do not
17299         seem to work.
17300
17301         * driver.c: Reenable opts.
17302
17303         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17304         of the evaluation stack.
17305         
17306         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17307         evaluation stack trace at entry to the bblock.
17308
17309         * mini.c (merge_stacks): New function to perform verification of stack merges.
17310         Turned off by default.
17311
17312         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17313         STACK_MP.
17314         
17315 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17316
17317         * local-propagation.c: Fixed bug 78549.
17318
17319 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17320
17321         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17322
17323 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17324
17325         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17326         tramp-arm.c, tramp-ia64.c
17327         (mono_debugger_create_notification_function): Update signature to
17328         new signature and use new protocol for creating the notification
17329         function.  
17330
17331         Should fix the build.
17332
17333 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17334
17335         * exceptions-ppc.c (mono_jit_walk_stack)
17336         (ves_icall_get_frame_info): Fix the build
17337
17338 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17339
17340         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17341
17342 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17343
17344         * il2tests.2.il: New file for generics CIL tests.  Add test for
17345         #78019.
17346         * Makefile.am: Update.
17347
17348         Fix #78019
17349         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17350         to nullable types.
17351
17352 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17353
17354         * aliasing.c: Fixed bug 78311.
17355
17356 2006-05-29  Martin Baulig  <martin@ximian.com>
17357
17358         * mini-exceptions.c (mono_find_jit_info): When computing the
17359         native offset, check whether we're actually inside the method's
17360         code; call mono_debug_print_stack_frame() to format the frame.
17361         (ves_icall_System_Exception_get_trace): Call
17362         mono_debug_print_stack_frame() to format the stack frame.
17363         (ves_icall_get_trace): Update to the new debugging API.
17364         (mono_jit_walk_stack_from_ctx): Likewise.
17365         (ves_icall_get_frame_info): Likewise.
17366
17367         * mini.c (get_method_from_ip): Use the new debugging API.
17368         (mono_print_method_from_ip): Likewise.
17369
17370         * exceptions-ppc.c
17371         (mono_jit_walk_stack): Use the new debugging API.
17372         (ves_icall_get_frame_info): Likewise.   
17373
17374 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17375
17376         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17377
17378 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17379
17380         * mini.c: Added "limitator" to inline for debugging.
17381
17382 2006-05-24  Martin Baulig  <martin@ximian.com>
17383
17384         * debug-debugger.c (mono_debugger_init): Create a private,
17385         malloc()-based code manager for the notification function and
17386         intentionally leak it on exit.  This fixes the crash-on-exit race
17387         condition.
17388
17389         * tramp-amd64.c
17390         (mono_debugger_create_notification_function): Added
17391         `MonoCodeManager *' argument.
17392
17393         * tramp-x86.c
17394         (mono_debugger_create_notification_function): Added
17395         `MonoCodeManager *' argument.
17396
17397 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17398
17399         * aliasing.c: Fixed 64 bit issue.
17400         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17401         default since all known bugs are fixed (one more time!).
17402
17403 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17404
17405         * mini.c: write barrier support.
17406
17407 2006-05-23  Martin Baulig  <martin@ximian.com>
17408
17409         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17410         check at the top of the file.
17411
17412 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17413
17414         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17415         reverting changes without reason and without changelog entries.
17416
17417 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17418
17419         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17420         to a few opcodes. Fixes #78439.
17421
17422         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17423         consistency with other archs.
17424
17425         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17426
17427 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17428
17429         * debug-debugger.c: fix the build.
17430
17431 2006-05-17  Martin Baulig  <martin@ximian.com>
17432
17433         * debug-debugger.c
17434         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17435         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17436         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17437         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17438
17439 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17440
17441         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17442
17443 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17444
17445         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17446         MONO_TYPE_GENERICINST.
17447         
17448         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17449         MONO_TYPE_GENERICINST.
17450
17451 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17452
17453         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17454         #78325.
17455
17456 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17457
17458         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17459         mempool.
17460         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17461
17462 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17463
17464         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17465         mono_trace_cleanup ().
17466
17467         * iltests.il: Fix problem with the newly added test.
17468
17469         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17470         due to register constraints, free up the previous hreg. Fixes #78314.
17471
17472         * iltests.il: Add new test for #78314.  
17473
17474         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17475         Interlocked.Add. Fixes #78312.
17476
17477         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17478         
17479 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17480
17481         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17482
17483 2006-05-05  Martin Baulig  <martin@ximian.com>
17484
17485         * debug-mini.c (mono_debug_open_block): New method.
17486
17487         * mini-amd64.c
17488         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17489         the beginning of each basic block.
17490
17491         * mini-x86.c
17492         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17493         the beginning of each basic block.
17494
17495 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17496
17497         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17498         default until I understand why they break the build on amd64.
17499
17500 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17501
17502         * mini.c (mini_cleanup): Call mono_cleanup ().
17503
17504         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17505         errors.
17506
17507 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17508
17509         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17510         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17511         default since all known bugs are fixed, and I cannot reproduce bug
17512         77944... I'm asking Matt Hargett to test again after this commit.
17513
17514 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17515
17516         * mini-codegen.c: Fixed typo that thrashed inline.
17517
17518 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17519
17520         * dominators.c (compute_dominators): Avoid using a worklist since
17521         it is not correct in some cases. Instead, iterate over all bblocks as
17522         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17523
17524 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17525
17526         * mini.c (mono_jit_compile_method_inner): Use
17527         mono_prepare_exception_from_error that resets the value
17528         internally.
17529
17530 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17531
17532         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17533         
17534 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17535
17536         * aliasing.c: Fixed bug 78210.
17537
17538 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17539
17540         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17541         default until all their problems (or the ones they trigger) are fixed.
17542
17543 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17544
17545         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17546         
17547         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17548         as loaded only after resolving patches since that could invoke the same method.
17549
17550         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17551
17552         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17553         functions.
17554
17555         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17556         AOT loader.
17557
17558         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17559         stack.
17560
17561         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17562         made from AOT code through the PLT table.
17563
17564         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17565         holding the plt offset when a call is made to the aot plt trampoline.
17566         
17567 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17568
17569         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17570         amd64 AOT support.
17571
17572         * Makefile.am (common_sources): Fix build breakage.
17573
17574         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17575         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17576         intra-assembly calls if possible.
17577         
17578         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17579
17580         * mini-trampolines.c: Handle PLT entries.
17581
17582         * mini.c: Avoid creating a GOT var for calls.
17583
17584         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17585         from mscorlib code.
17586
17587         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17588         from mscorlib code.
17589
17590         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17591         AOT code.       
17592
17593         * mini.h: Bump AOT file format version.
17594         
17595         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17596         covers more cases.
17597
17598 2006-04-25  Martin Baulig  <martin@ximian.com>
17599
17600         * driver.c: Disable copyprop, consprop and inline when running
17601         inside the debugger.
17602
17603 2006-04-25  Martin Baulig  <martin@ximian.com>
17604
17605         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17606         with `get_current_thread' and added `detach'.
17607         (MonoDebuggerMetadataInfo): Added `thread_size',
17608         `thread_tid_offset', `thread_stack_ptr_offset' and
17609         `thread_end_stack_offset'.
17610
17611 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17612
17613         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17614         aot-runtime.c.
17615
17616         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17617         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17618
17619         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17620
17621         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17622
17623         * aot.c: Add support for ADJUSTED_IID.  
17624
17625 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17626
17627         * aot.c (emit_method_order): Don't align method_order_end.
17628
17629         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17630         the interface ID changes.
17631
17632 2006-04-21  Dick Porter  <dick@ximian.com>
17633
17634         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17635         cleaning up a thread.  Fixes the new part of bug 77470.
17636
17637 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17638
17639         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17640         to managed wrapper.
17641                      
17642 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17643
17644         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17645         
17646         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17647         SIGSEGV. Fixes #78072.
17648
17649         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17650         unregister our SIGABRT handler.
17651
17652 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17653
17654         * mini.c: Disabled inline where it can alter the call stack in a
17655         way visible from managed code.
17656         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17657         default.
17658
17659 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17660
17661         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17662         on other platforms. Fixes #78089.
17663
17664 2006-04-13  Martin Baulig  <martin@ximian.com>
17665
17666         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17667         determine whether we're inside the debugger.
17668
17669         * debug-debugger.h
17670         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17671
17672 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17673
17674         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17675         handler clauses. Fixes #78024.
17676
17677         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17678         in the CALL_MEMBASE opcodes. Fixes #78088.
17679         (mono_arch_get_vcall_slot_addr): Ditto.
17680
17681 2006-04-10  Martin Baulig  <martin@ximian.com>
17682
17683         * debug-debugger.c: The thread handling code has now been moved
17684         into ../metadata/threads.c.
17685
17686 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17687
17688         * driver.c (mono_main): Fix --with-gc=none build.
17689
17690         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17691         (mono_spillvar_offset_float): Ditto.
17692         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17693         hreg, not when its !global, since on ia64, there is a third category: stacked
17694         registers.      
17695
17696 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17697
17698         * mini.c: set MonoInst->klass for load field address and a few other
17699         places.
17700
17701 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17702
17703         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17704
17705 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17706
17707         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17708         the branch opt changes.
17709
17710 2006-04-06  Dick Porter  <dick@ximian.com>
17711
17712         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17713         
17714         * wapihandles.c (mini_wapi_seminfo): 
17715         * driver.c (mono_main): Add semaphore info option
17716
17717 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17718
17719         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17720         branch optimization changes. Fixes #78009.
17721
17722 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17723
17724         * mini.c: ignore accessibility of methods in managed->native wrappers.
17725
17726 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17727
17728         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17729         
17730         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17731
17732 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17733
17734         * mini.c: Modify the branch optimizations to preserve the invariant that
17735         the entries inside the in_bb and out_bb arrays are unique.
17736         (mono_unlink_bblock): Avoid creation of new arrays.
17737
17738 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17739
17740         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17741         change (#77992).
17742
17743 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17744
17745         * mini.c (optimize_branches): Remove the "optimizations" in
17746         the cbranch1/cbranch2 -> branch cases which were causing several
17747         problems in the past. Fixes #77986.
17748
17749 2006-03-31  Chris Toshok  <toshok@ximian.com>
17750
17751         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17752         default optimizations :(
17753
17754 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17755
17756         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17757         branch.
17758
17759 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17760
17761         * local-propagation.c: Added comments to structs and removed
17762         "Mono" prefixes from local tree mover types.
17763
17764 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17765
17766         * Makefile.am (arch_sources): Define this for each architecture so 
17767         libmono_la_SOURCES is defined in one place.
17768
17769 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17770
17771         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17772         from handles/.
17773
17774 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17775
17776         * driver.c: print the GC name supplied by configure.
17777
17778 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17779
17780         * local-propagation.c: Added tree mover, and moved here all the
17781         local propagation code from mini.c
17782         * mini.c: Added support for treeprop, and moved all the local
17783         propagation code to local-propagation.c
17784         * mini.h: Added support for treeprop
17785         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17786         treeprop, inline and deadce by default
17787         * Makefile.am: Added local-propagation.c
17788
17789 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17790
17791         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17792
17793 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17794
17795         * debug-debugger.c: make it compile without the Boehm GC.
17796
17797 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17798
17799         * mini.c: fixed issue with mismatch when an icall is registered
17800         with multiple names but same address.
17801
17802 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17803
17804         * declsec.c, mini-exceptions.c: use write barrier to set reference
17805         fields of managed objects.
17806
17807 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17808
17809         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17810         (can_access_internals): Fix a warning.
17811
17812         * mini.c (print_method_from_ip): Rename this to 
17813         mono_print_method_from_ip so it gets exported.
17814
17815         * trace.c: Deal with strings inside StringBuilder's containing garbage
17816         and fix memory leaks. Fixes #77848.
17817
17818 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17819
17820         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17821         fixes #77787.
17822
17823 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17824         
17825         * mini-s390.c: Remove OP_X86_TEST_NULL.
17826
17827 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17828
17829         * mini.c: use the correct GetHashCode() for the moving collector.
17830
17831 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17832
17833         * liveness.c: Regalloc spill cost tuning.
17834
17835 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17836         
17837         * mini-s390x.h: Correct S390_LONG macro.
17838
17839         * mini-s390x.c: Cleanup unused code.
17840
17841 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17842
17843         * jit-icalls.h: New file.
17844
17845         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17846         icalls and include that instead of including jit-icalls.c.
17847
17848         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17849         OP_X86 opcodes.
17850
17851 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17852
17853         * mini.c: when checking for member accessibility, also check for
17854         friend assemblies and for explicit interface implementations.
17855
17856 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17857
17858         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17859
17860         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17861
17862         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17863         common cases are done first.    
17864
17865         * mini-ops.h: Only define platform specific opcodes on the given platform.
17866
17867         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17868         branch.
17869         
17870 2006-03-14  Martin Baulig  <martin@ximian.com>
17871
17872         Revert Paolo's change from r57348:
17873
17874         * mini.h: don't use gboolean for bitfields.
17875         * mini.c: verifier changes for fields and methods accessibility.
17876
17877 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17878
17879         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17880
17881         * mini-s390x.c: Fix conv_r_un.
17882
17883         * cpu-s390, cpu-s390x.md: Fix lengths.
17884
17885 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17886
17887         * mini.c: nested types have access to all the nesting
17888         levels, not just the enclosing types.
17889
17890 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17891
17892         * mini.c: added a few more verification checks.
17893
17894 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17895
17896         * liveness.c: Merge optimizations from the linear-il branch.
17897
17898 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17899
17900         * mini-ia64.c (emit_call): Add a comment.
17901
17902         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17903
17904         * tramp-ia64.c: Fix some warnings.
17905
17906 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17907
17908         * mini.h: don't use gboolean for bitfields.
17909         * mini.c: verifier changes for fields and methods accessibility.
17910
17911 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17912
17913         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17914         lazy icall wrapper changes.
17915
17916         * dominators.c: Replace all the dominator algorithms with faster
17917         ones from the linear-il branch.
17918
17919         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17920         the mempool.
17921
17922         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17923         common cases are done first.
17924
17925         * mini-amd64.c: Fix some warnings.
17926
17927         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17928         from the mempool.
17929
17930         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17931         added code.
17932
17933         * mini.h: Add a missing prototype.
17934
17935 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17936
17937         * mini.c: Compile icall wrappers lazily.
17938
17939         * mini-codegen.c: Use printf instead of g_print since its much faster.
17940
17941         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17942         function.
17943
17944         * mini.c (optimize_branches): Cache the negative result from 
17945         remove_block_if_useless ().
17946
17947         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17948         Also fix some bblock linking issues.
17949
17950         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17951         assembly files.
17952
17953         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17954
17955         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17956         accessed fields first, for better cache behavior.
17957         
17958 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17959
17960         * mini.c: speedup IList<T> array accesses.
17961
17962 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17963
17964         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17965         inline_costs counter. Fixes #77190.
17966
17967 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17968
17969         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17970         trace messages. Fixes #77706.
17971
17972 2006-03-04  Martin Baulig  <martin@ximian.com>
17973
17974         * tramp-amd64.c, tramp-x86.c
17975         (mono_debugger_create_notification_function): Use
17976         mono_global_codeman_reserve() to allocate a buffer at runtime and
17977         return it.
17978
17979         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17980
17981         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17982         notification function at runtime and then call `initialize' in the
17983         `MONO_DEBUGGER__debugger_info' vtable.
17984
17985 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17986
17987         * iltests.il: Fix a visibility problem.
17988
17989 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17990
17991         * driver.c, mini.c: add hooks for the counters API.
17992
17993 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17994
17995         * driver.c: show disabled options.
17996
17997 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17998
17999         * linear-scan.c: always use cost-driven selection.
18000
18001 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18002
18003         * jit-icalls.c (helper_compile_generic_method): Revert change from
18004         2006-02-24.
18005
18006 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18007
18008         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18009
18010 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18011
18012         * inssel.brg: style fixes, mostly to force the updated monoburg
18013         to run for people using svn.
18014
18015 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18016
18017         * mini.c: match monoburg changes.
18018
18019 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18020
18021         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18022         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18023         declaration in the header file.
18024
18025 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18026
18027         * helpers.c: reduce relocations and mem usage.
18028
18029 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18030
18031         * mini.h, mini-codegen.c: disable logging features if
18032         requested by configure.
18033
18034 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18035
18036         * mini.c: tiny verifier changes.
18037
18038 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18039
18040         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18041         cpu-pentium.md: stack alignment changes for osx/x86,
18042         partially from Geoff Norton <gnorton@customerdna.com>.
18043
18044 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18045
18046         * jit-icalls.c (helper_compile_generic_method): Update to changes
18047         in metadata/class.c.
18048
18049 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18050         
18051         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18052         
18053         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18054         interface calls with large offsets.
18055
18056 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18057
18058         * jit-icalls.c (helper_compile_generic_method): Document the
18059         special-case we depend on so that we can inflate the method twice
18060         with the same context with no bad side-effects.
18061
18062 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18063
18064         * mini-x86.c, mini-amd64.c: fix for case when xen support
18065         is disabled.
18066
18067 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18068
18069         * mini-x86.c, mini-amd64.c: generate code to access tls items
18070         in a faster way for Xen systems.
18071
18072 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18073
18074         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18075         updates and compilation fixes for the OSX/x86 port, mostly from
18076         Geoff Norton <gnorton@customerdna.com>.
18077
18078 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18079
18080         * inssel.brg: faster interface call implementation
18081         to sync with the interface_offsets MonoVTable changes.
18082
18083 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18084
18085         * mini.c: more verification checks.
18086
18087 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18088
18089         * mini.c: added a few more verification checks.
18090
18091 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18092
18093         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18094         facility on the processor and use it if available.
18095
18096 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18097
18098         * driver.c, aot.c, mini.c: throw exception if the IL code is
18099         invalid or unverifiable.
18100
18101 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18102
18103         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18104         m.StructField.
18105
18106 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18107
18108         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18109
18110 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18111
18112         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18113         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18114         handling of instantiated generic valuetypes.
18115
18116 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18117
18118         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18119         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18120         instead.
18121
18122         * generics.2.cs: Revert the nullable reftypes tests.
18123
18124 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18125
18126         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18127         using __builtin_frame_address (1) as it doesn't work in the presence
18128         of optimizations. Hopefully fixes #77273.
18129
18130         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18131         -> generics.cs change as it doesn't work with some automake versions.
18132
18133 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18134
18135         * mini.c: handle systems that sue a different way to
18136         retrieve the stack address of the current thread.
18137
18138 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18139
18140         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18141         it specially in the makefile.
18142
18143         * generics.2.cs: Add tests for nullable reference types.
18144
18145 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18146
18147         * mini.c: always handle the case when mono_jit_init()
18148         is called in a thread different from the main thread,
18149         confusing libgc (bug #77309).
18150
18151 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18152
18153         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18154
18155 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18156
18157         * mini.c: change optimize_branches () to use a single loop
18158         and introduce a new optimization to simplify some range checks.
18159
18160 2006-02-03  Martin Baulig  <martin@ximian.com>
18161
18162         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18163         and merged with debugger_thread_manager_add_thread().
18164         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18165         inform the debugger about the main thread.
18166
18167 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18168
18169         * basic.cs: Add test for div.un/rem.un constant folding.
18170
18171 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18172
18173         * cpu-s390x.md: correct int_xor_imm length
18174
18175 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18176
18177         * generics.2.cs: New test for #77442.
18178
18179         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18180         #77442.
18181
18182 2006-02-02  Martin Baulig  <martin@ximian.com>
18183
18184         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18185         <mono/metadata/mono-debug-debugger.h>   
18186
18187         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18188
18189 2006-02-02  Martin Baulig  <martin@ximian.com>
18190
18191         * debug-debugger.h: New header file for debug-debugger.c.
18192
18193         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18194         function is a separate thread anymore; add support for attaching.
18195
18196 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18197
18198         * tramp-x86.c: Fix a warning.
18199
18200 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18201
18202         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18203         on very large methods.
18204
18205         * aot.c (load_patch_info): Fix a warning.
18206
18207 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18208
18209         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18210         mini-ops.h: alu membase optimizations.
18211
18212 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18213
18214         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18215         to speedup StringBuilder.
18216
18217 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18218
18219         * dominators.c (mono_compute_natural_loops): Fix detection of
18220         loop body start blocks.
18221
18222         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18223
18224 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18225
18226         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18227         #75145.
18228
18229 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18230
18231         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18232
18233 2006-01-25  Martin Baulig  <martin@ximian.com>
18234
18235         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18236         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18237         started to cleanup this file a little bit.
18238
18239 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18240
18241         * mini.c: optimize a codepath frequently happening in generics code.
18242
18243 2006-01-23  Martin Baulig  <martin@ximian.com>
18244
18245         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18246
18247         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18248         functions directly.
18249
18250         * driver.c: debug-debugger.c is only available if
18251         `MONO_DEBUGGER_SUPPORTED' is defined.   
18252
18253 2006-01-23  Martin Baulig  <martin@ximian.com>
18254
18255         * debug-debugger.c: Only enable this on platforms where the Mono
18256         Debugger is working (x86 and x86_64).
18257
18258 2006-01-21  Martin Baulig  <martin@ximian.com>
18259
18260         The Mono Debugger is now using the normal `mono' instead of the
18261         `mono-debugger-mini-wrapper' when executing managed code.
18262
18263         * debug-debugger.c: New file; previously known as
18264         debugger/wrapper/wrapper.c.
18265
18266         * debug-mini.c (mono_init_debugger): Removed.
18267
18268         * driver.c (mono_main): Added new `--inside-mdb' command line
18269         argument which is used when running inside the debugger.
18270
18271 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18272
18273         * liveness.c (mono_analyze_liveness): Remove some unused data
18274         structures.
18275
18276 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18277
18278         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18279
18280 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18281
18282         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18283         depends on implementation details of monobitset.
18284
18285         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18286         Fixes #77271.
18287
18288 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18289
18290         * liveness.c: Update after monobitset changes.
18291
18292 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18293
18294         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18295
18296 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18297
18298         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18299
18300         * mini-s390x.c: Remove warning messages.
18301
18302 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18303
18304         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18305
18306 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18307
18308         * generics.2.cs: Add ldelem/stelem_any test.
18309
18310 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18311
18312         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18313
18314 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18315
18316         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18317         
18318 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18319
18320         * generics.2.cs: Reenable vtype tests.
18321
18322         * inssel-x86.brg: Remove an icorrect valuetype rule.
18323
18324 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18325
18326         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18327         initial support for OP_ABS.
18328
18329 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18330
18331         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18332
18333 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18334
18335         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18336         conversion and implement LADD/LSUB.
18337
18338         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18339         architectures.
18340
18341 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18342
18343         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18344
18345         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18346         architectures.
18347
18348 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18349
18350         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18351         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18352         (stack walk problem).
18353
18354 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18355
18356         * aot.c (mono_aot_load_method): Fix a warning.
18357
18358 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18359
18360         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18361
18362 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18363
18364         * iltests.il: Add test for #77148.
18365
18366         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18367         #77148.
18368
18369 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18370
18371         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18372
18373 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18374
18375         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18376         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18377
18378         * basic-long.cs: Add lconv-to-r4/r8 tests.
18379
18380 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18381
18382         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18383
18384         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18385         here as on other archs.
18386
18387 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18388
18389         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18390
18391 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18392
18393         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18394         
18395         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18396
18397         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18398         instrument_prolog; Add memory_barrier instruction.
18399
18400 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18401
18402         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18403
18404 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18405
18406         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18407
18408         * aliasing.c inssel.brg: Fix warnings.
18409
18410         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18411         could skip initialization of some parts of memory.
18412
18413         * mini.c mini-ia64.c: Fix warnings.
18414
18415         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18416
18417 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18418
18419         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18420         a crash seen on sparc.
18421
18422         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18423         
18424         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18425
18426 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18427
18428         * mini-ops.h: Add s390_backchain instruction
18429
18430         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18431
18432         * cpu-s390.md: Add s390_backchain instruction
18433
18434         * mini-s390.c: Significant ABI changes
18435
18436         * mini-s390.h: Cater for zero length structures
18437
18438 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18439
18440         * mini-s390.c: ABI fixes
18441
18442         * inssel-s390.brg: Remove debug statements
18443
18444         * cpu-s390.md: Fix length of ATOMIC_xx operations
18445
18446 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18447
18448         * basic-float.cs: Add float<->long conversion tests.
18449
18450 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18451
18452         * mini-s390.c: Fix LOCALLOC processing.
18453
18454         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18455
18456 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18457
18458         * iltests.il: Add tests for some opcodes not covered by the other
18459         tests.
18460
18461 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18462
18463         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18464         register loading for Tail processing; Correct trace output.
18465
18466         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18467
18468         * cpu-s390.md: Correct size of jmp instruction. 
18469
18470 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18471
18472         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18473
18474 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18475
18476         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18477           Bring s390 up to current level.
18478
18479 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18480
18481         * generics.2.cs: Disable the newly added tests as they do not work yet.
18482         
18483         * generics.2.cs: Add valuetype tests.
18484
18485 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18486
18487         * basic-long.cs: Add i4->u8 test.
18488
18489         * objects.cs: Add tests for JIT intrinsic.
18490
18491         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18492         optimizations lost by a mistake.
18493
18494 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18495
18496         * basic-long.cs: Remove a test moved to objects.cs.
18497
18498         * arrays.cs: Add more array tests.
18499
18500 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18501
18502         * arrays.cs: Add new tests for multi-dimensional arrays.
18503
18504 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18505
18506         * Makefile.am (test_sources2): Add generics.2.cs.
18507         (EXTRA_DIST): Add test_sources2.
18508
18509 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18510
18511         Support for boxing and unboxing nullable types as well as the
18512         isinst operation on nullables, per the CLI ammendment.
18513
18514         * inssel.brg (CEE_ISINST): Special case for nullable
18515
18516         * mini.c (handle_unbox_nullable): new method
18517         (handle_box): Special case for nullable types
18518         (mono_method_to_ir): Call handle_unbox_nullable in correct
18519         places.
18520
18521         * generics.2.cs: New test suite
18522
18523         * Makefile.am: Support for regression tests with generics.
18524
18525 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18526
18527         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18528         allocated to registers. Fixes #76800.
18529
18530 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18531
18532         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18533
18534 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18535
18536         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18537         of platforms.
18538
18539 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18540
18541         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18542         objects.cs.
18543
18544         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18545         
18546         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18547 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18548
18549         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18550         single precision before storing to a single precision location.
18551
18552 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18553
18554         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18555
18556 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18557
18558         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18559         correct files.
18560
18561         * basic.cs: Remove test_0_byte_compares test which was moved to
18562         objects.cs a long time ago.
18563
18564 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18565
18566         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18567
18568 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18569
18570         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18571         handlers are called.
18572
18573         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18574         throwing code.
18575
18576          * mini-ia64.c: Add support for the throw->branch exception 
18577         optimization.   
18578
18579         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18580
18581 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18582
18583         * mini.c: Enabled "fastpath" deadce :-)
18584         
18585 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18586
18587         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18588         alias analysis pass to support it.
18589         * mini.h: Likewise.
18590         * ssa.c: Likewise.
18591         * liveness.c: Likewise (liveness computation can use aliasing
18592         information to be more accurate).
18593         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18594         moreover made so that "--compile-all" uses the given optimization
18595         flags and not the default ones.
18596         * aliasing.c: Alias analysis (new file).
18597         * aliasing.h: Likewise.
18598         * Makefile.am: added "aliasing.c" and "aliasing.h".
18599         
18600 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18601
18602         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18603         OP_L opcodes.
18604
18605 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18606
18607         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18608         fp >= end_of_stack exit condition, as it is not needed, and it might
18609         become true for fp eliminated frames.
18610
18611 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18612
18613         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18614         coded offsets.
18615
18616 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18617
18618         * mini-arm.c: fixed alignment of doubles/longs to match
18619         the C ABI (bug #76635).
18620
18621 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18622
18623         * aot.c: fix compilation with --enable-minimal=aot.
18624
18625 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18626
18627         * mini-arm.c: fixed compatibility with the new
18628         floating point emulator package for compares.
18629
18630 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18631
18632         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18633
18634 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18635
18636         * mini-exceptions.c (print_stack_frame): Output to stderr.
18637         (mono_handle_native_sigsegv): Ditto.
18638
18639 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18640
18641         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18642         OP_LCONV_TO_OVF_I implementation.
18643
18644         * mini-amd64.c: Add support for the throw->branch exception 
18645         optimization.
18646
18647         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18648         when the catch clause catches a more general exception, i.e. Object.
18649
18650 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18651
18652         * cpu-ia64.md: Remove unused opcodes.
18653
18654         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18655         specific defines for architectures defining USE_SIGACTION.
18656
18657         * mini-ia64.c: Fix some warnings.
18658
18659         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18660         version seemed to skip a frame.
18661
18662 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18663
18664         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18665         only calls which are made to native code use this flag.
18666
18667 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18668
18669         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18670         varargs methods as well.
18671         
18672         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18673         which have save_lmf set. Reorganize methods prologs a bit.
18674
18675         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18676         debugger to the proper place.
18677
18678 2005-10-29  Martin Baulig  <martin@ximian.com>
18679
18680         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18681         when running inside the debugger until the debugger has support
18682         for it.
18683
18684 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18685
18686         * mini.h: Fix a warning.
18687
18688 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18689
18690         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18691         we expose publicly, this returns the string.
18692
18693 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18694
18695         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18696         with fp elimination.
18697
18698 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18699
18700         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18701         native stacktrace using the glibc 'backtrace' function if available.
18702
18703 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18704
18705         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18706
18707         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18708         handle SIGSEGVs received while in native code.
18709
18710         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18711         code, call mono_handle_native_sigsegv which will abort the runtime
18712         after printing some diagnostics, instead of converting it into a
18713         confusing NullReferenceException.
18714
18715 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18716
18717         * cpu-pentium.md: Remove unused opcodes.
18718
18719 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18720
18721         * mini-amd64.h (MonoLMF): Add rsp field.
18722
18723         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18724         the lmf too.
18725
18726 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18727
18728         * mini-codegen.c (get_register_spilling): Fix some warnings.
18729
18730 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18731
18732         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18733         elimination during exception handling. Enable fp elimination by
18734         default.
18735
18736         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18737         elimination.
18738
18739 2005-10-16  Martin Baulig  <martin@ximian.com>
18740
18741         * mini-exceptions.c
18742         (mono_debugger_run_finally): New public method for the debugger.
18743
18744 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18745
18746         * debug-mini.c (mono_debug_init_method): Fix warning.
18747
18748         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18749         the 'exname' parameter const to fix some warnings.
18750
18751 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18752
18753         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18754         introduced by the previous patch.
18755
18756 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18757
18758         * basic-float.cs: Add test for precision of float arithmetic.
18759
18760         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18761         when loading/storing single values from/to memory.
18762
18763         * mini.c (mono_jit_compile_method_with_opt): Create the function
18764         pointers in the correct domain.
18765
18766 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18767
18768         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18769         introduced by previous patch.
18770         
18771         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18772         when out_filter_idx is NULL.
18773
18774         * mini-exceptions.c: Don't run filter clauses twice during exception
18775         handling. Fixes #75755.
18776
18777 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18778
18779         * aot.c: Add support for ldflda wrappers.
18780
18781         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18782         #75902.
18783
18784 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18785
18786         * mini.c, mini.h: do not consider exception handlers blocks when
18787         setting up interface variables.
18788
18789 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18790
18791         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18792
18793 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18794
18795         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18796         causes a regression.
18797
18798         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18799
18800 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18801
18802         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18803         of the OP_P definitions.
18804
18805         * TODO: Add a proposal for dealing with the CEE/OP mess.
18806
18807         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18808         optimizations from the x86 port.
18809
18810         * cpu-amd64.md: Ditto.
18811
18812         * basic.cs basic-long.cs: Add tests.
18813
18814 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18815
18816         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18817         Patrik Torstensson's implementation of my exception-handling
18818         optimization idea, when the exception object is not used
18819         (bug #62150).
18820
18821 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18822
18823         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18824         of the mul_imm optimizations from the old jit.
18825
18826 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18827
18828         * mini.c, liveness.c: patch by Patrik Torstensson and
18829         Zoltan Varga to improve performance in methods with
18830         exception clauses.
18831
18832 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18833
18834         * driver.c: Remove 'Globalization' entry from --version.
18835
18836 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18837
18838         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18839         there is a profiler interested in JIT events.
18840
18841         * aot.c: Load profile files produced by the AOT profiling module, and
18842         reorder methods based on the profiling info. Add a 'method_order' table
18843         to the AOT file to make mono_aot_find_jit_info work with the reordered
18844         methods.
18845
18846         * mini.h: Bump AOT file version info.
18847
18848 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18849
18850         * mini-arm.h: work around what looks like a gcc bug when optimizations
18851         are enabled.
18852
18853 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18854
18855         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18856         conditionals.  Use ...
18857         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18858
18859 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18860
18861         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18862         to determine the amount of memory to copy when passing valuetypes.
18863
18864         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18865         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18866
18867 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18868
18869         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18870         information about aot.
18871
18872 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18873
18874         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18875         macros. This will allow a deadlock debugger to easily be plugged
18876         in.
18877
18878 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18879
18880         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18881
18882 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18883
18884         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18885         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18886         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18887         ($(arch_built)) [CROSS_COMPILING]: Error out.
18888
18889 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18890
18891         * aot.c: Add support for the no_special_static flag for classes.
18892
18893 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18894
18895         * Reapply reverted patches.
18896
18897         * *: Revert r50174 as well.
18898
18899         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18900
18901 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18902
18903         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18904
18905 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18906
18907         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18908         part of the SIG_HANDLER_SIGNATURE.  
18909
18910 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18911
18912         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18913         statistics.
18914
18915         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18916         introduced by previous patch.
18917
18918 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18919
18920         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18921         saved registers too.
18922
18923         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18924         upon the information returned by get_call_info ().
18925         
18926         * mini-x86.c (add_float): Fix stack size calculation.
18927         (mono_arch_call_opcode): Rewrite this so it works based up the
18928         information returned by get_call_info ().
18929         (mono_arch_get_this_vret_args): Ditto.
18930
18931 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18932
18933         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18934         in cinfo to determine the registers which need to be used.
18935
18936 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18937
18938         * driver.c (mono_main): Add --server and --desktop flags. 
18939
18940 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18941
18942         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18943         registers as global registers.
18944
18945         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18946         longer needed with the new register allocator.
18947
18948         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18949
18950         * cpu-ia64.md: Remove unused opcodes.
18951         
18952         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18953         
18954 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18955
18956         * cpu-amd64.md: Remove unused opcodes.
18957
18958         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18959         needed with the new register allocator.
18960
18961         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18962         reg-reg moves.
18963
18964 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18965
18966         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18967
18968 2005-09-16  Martin Baulig  <martin@ximian.com>
18969
18970         * exceptions-amd64.c
18971         (throw_exception): Don't call mono_debugger_throw_exception() if
18972         we're a rethrow - see the FIXME in the code.
18973
18974 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18975
18976         * mini.c (mono_init_exceptions): This only works on some architectures.
18977         
18978 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18979
18980         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18981         on ia64.
18982
18983         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18984
18985         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18986         now in mini-exceptions.c.
18987
18988 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18989
18990         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18991         now in mini-exceptions.c.
18992
18993 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18994
18995         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18996         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18997
18998         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18999         code into mini-exceptions.c. Add some assertions to it.
19000
19001 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19002
19003         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19004         (<software@solmersa.com>). Fix as errors on windows.
19005
19006 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19007
19008         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19009         method info into the LMF.
19010
19011 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19012         
19013         * mini-ia64.c: Add proper unwind info for method epilogs.
19014
19015         * exceptions-ia64.c: Add some code to help debugging.
19016         
19017         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19018
19019         * mini-exceptions.c: Fix warning.
19020
19021 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19022
19023         * mini.c: Really fix build.
19024
19025         * mini-x86.c mini-amd64.c: Fix build.
19026
19027 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19028
19029         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19030
19031         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19032         some Interlocked methods as intrinsics.
19033
19034         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19035         for Thread methods as well.
19036
19037         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19038
19039         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19040
19041         * mini-ia64.c mini-x86.c mini-amd64.c 
19042         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19043         OP_MEMORY_BARRIER.
19044         
19045         * mini.c (mono_init_exceptions): Fix build breakage.
19046
19047 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19048
19049         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19050         of instructions. Use the new ia64_unw_op macros for emitting unwind
19051         info.
19052
19053         * mini.c (mono_init_exceptions): Initialize exception handling
19054         related trampolines at startup.
19055
19056 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19057
19058         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19059
19060 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19061
19062         * mini.c: Handle type loading errors gracefully during compilation and
19063         throw the appropriate exception.
19064
19065 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19066
19067         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19068         for the mono binary.
19069
19070 2005-09-09  Martin Baulig  <martin@ximian.com>
19071
19072         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19073         the release.
19074
19075 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19076
19077         * mini-arm.h: use emulation for conv.r.un for the release.
19078
19079 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19080
19081         * mini-arm.c, objects.cs: more fixes and tests for them.
19082
19083 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19084
19085         * mini-arm.c: align structures to at least 4 bytes to be able
19086         to keep our current optimized memcpy.
19087
19088 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19089
19090         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19091
19092 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19093
19094         * mini.c: ignore SIGPIPE.
19095
19096 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19097
19098         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19099
19100         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19101
19102 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19103
19104         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19105
19106 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19107
19108         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19109         exception handling support.
19110         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19111         patch by Brian Koropoff <briank@marakicorp.com>).
19112
19113 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19114
19115         * mini.c: revert another 'optimization' which breaks when
19116         items on the eval stack need to be saved at a basic block end
19117         (bug #75940).
19118
19119 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19120
19121         * jit-icalls.c: for arrays, ensure we always provide
19122         lower bounds.
19123
19124 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19125
19126         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19127         
19128         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19129
19130 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19131
19132         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19133         arguments in their original register.
19134
19135 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19136
19137         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19138         memset/memcpy.
19139
19140         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19141         when ssapre is enabled.
19142
19143         * inssel-long.brg: Fix bug in previous patch.
19144
19145         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19146         multiplication by a constant.
19147
19148 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19149
19150         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19151         icc.
19152
19153         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19154         saving registers.
19155
19156 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19157
19158         * inssel-arm.brg: apply changes tested by Brian Koropoff
19159         <briank@marakicorp.com>.
19160
19161 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19162
19163         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19164         
19165 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19166
19167         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19168         to the same register if dreg is just a base register.
19169         (print_ins): Improve printing of membase opcodes.
19170
19171         * inssel-x86.brg: Add optimized ldind(reg) rules.
19172
19173         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19174
19175 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19176
19177         * mini.c: when running under valgrind, set the stack bottom for
19178         the GC at the actual approximate stack for the app (fixes running
19179         mono with valgrind).
19180
19181 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19182
19183         * mini.c: do no break at the first valuetype to init found
19184         (fixes bug #75791).
19185
19186 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19187
19188         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19189
19190 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19191
19192         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19193
19194 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19195
19196         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19197
19198 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19199
19200         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19201
19202         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19203         code.
19204
19205         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19206         code.
19207
19208         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19209         methods.
19210
19211 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19212
19213         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19214
19215 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19216
19217         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19218         in the tail recursion optimization.
19219
19220         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19221         debug info into the assembly file.
19222
19223         * iltests.il: Add test for filter regions.
19224
19225         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19226         initial stack of filter regions. Fixes #75755.
19227
19228 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19229
19230         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19231         stack requirements.
19232
19233 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19234
19235         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19236         the check for an already compiled method on non-ia64 platforms.
19237         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19238         proper domain.
19239
19240         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19241
19242         * inssel-x86.brg: Add some optimized call rules.
19243
19244 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19245
19246         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19247         method here.
19248
19249         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19250         mono_arch_patch_delegate_trampoline.
19251
19252         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19253
19254         * mini-trampolines.c: Fix build.
19255
19256         * mini-amd64.h: Add delegate trampolines.
19257
19258         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19259
19260         * inssel-amd64.brg: Add optimized call rules.
19261         
19262         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19263
19264         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19265
19266 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19269         change.
19270
19271         * mini-ia64.c: Remove LMF fixmes.
19272
19273         * mini-ia64.h: Remove most fields from LMF.
19274
19275         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19276
19277         * mini-trampolines.c: Add support for IA64 function descriptors.
19278
19279         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19280         for IA64 function descriptors.
19281
19282 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19283
19284         * tramp-arm.c: patch the vtable for virtual calls. Added
19285         support code to register/unregister the LMF.
19286         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19287         more LMF work.
19288
19289 2005-08-19  Dick Porter  <dick@ximian.com>
19290
19291         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19292         bit value if needed.
19293
19294 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19295
19296         * mini.c (mini_get_method): Move handling of wrapper data here.
19297
19298         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19299
19300         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19301         virtual.
19302
19303         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19304         bblock->code does not remain empty.
19305
19306 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19307
19308         * arrays.cs: Add regression test for #75832.
19309
19310         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19311         rules. Fixes #75832.
19312
19313         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19314         instruction scheduling.
19315
19316 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19317
19318         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19319
19320 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19321
19322         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19323
19324         * mini-codegen.c: Fix VC build.
19325
19326         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19327
19328 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19329
19330         * mini.h: fix signature for mono_register_opcode_emulation.
19331
19332 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19333
19334         * mini.c: Get rid of most of the helper_sig_... constants using
19335         mono_create_icall_signature ().
19336
19337 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19338
19339         * jit-icalls.c (helper_ldstr): New helper function.
19340
19341         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19342
19343         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19344         throw, load the string using a helper call instead of creating a string object.
19345
19346         * aot.c: Update after LDSTR changes.
19347
19348         * mini.h: Bump AOT file version.
19349         
19350         * aot.c: Save class size info into the AOT file. Print more statistics during
19351         compilation.
19352
19353         * mini.h: Bump AOT file version.
19354
19355         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19356         ordering of disasm cases. Fixes #74957.
19357
19358 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19359
19360         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19361         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19362         the generic code needed for the ARM port.
19363
19364 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19365
19366         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19367         inssel-arm.brg: more ARM features and fixes.
19368
19369 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19370
19371         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19372         ARM port work in progress.
19373
19374 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19375
19376         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19377
19378         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19379
19380         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19381
19382         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19383
19384         * *-ia64.*: Ongoing IA64 work.
19385         
19386         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19387
19388 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19389
19390         * TODO: Remove out-of-data todo stuff.
19391
19392         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19393         dead code.
19394
19395         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19396
19397         * mini.h: Bump corlib version.
19398
19399 2005-07-27  Martin Baulig  <martin@ximian.com>
19400
19401         * mini-codegen.c
19402         (create_copy_ins): Added `const unsigned char *ip' argument; set
19403         `copy->cil_code' from it.
19404
19405 2005-07-27  Martin Baulig  <martin@ximian.com>
19406
19407         * mini-exceptions.c (mono_handle_exception): Don't call
19408         mono_debugger_handle_exception() for filters.
19409
19410 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19411
19412         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19413         as well.
19414
19415 2005-07-26  Martin Baulig  <martin@ximian.com>
19416
19417         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19418
19419         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19420         helper_compile_generic_method() if the method is actually virtual
19421         and non-final.
19422
19423 2005-07-26  Martin Baulig  <martin@ximian.com>
19424
19425         * mini.c
19426         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19427         public; this is now accessed directly by the debugger.
19428         (mono_generic_trampoline_code): Removed.
19429
19430         * debug-mini.c
19431         (mono_debug_init_method): Also add interncalls and wrappers.
19432
19433 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19434
19435         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19436
19437 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19440
19441 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19442
19443         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19444
19445 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19446
19447         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19448         getting TLS offsets on AMD64 too.
19449
19450 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19451
19452         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19453
19454 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19455
19456         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19457         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19458
19459 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19460
19461         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19462
19463         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19464         to mini.c.
19465
19466         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19467         mono_sparc_is_virtual_call ().
19468         
19469         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19470
19471         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19472         trampoline parameters.
19473
19474         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19475         
19476         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19477         to mono_arch_get_vcall_slot_addr.
19478
19479         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19480         trampoline code.
19481
19482         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19483
19484 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19487
19488 2005-07-19  Martin Baulig  <martin@ximian.com>
19489
19490         * exceptions-amd64.c (throw_exception): Call
19491         mono_debugger_throw_exception() here like we're doing it on i386.
19492
19493 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19494
19495         * mini-ia64.c: Add optimized TLS access support.
19496
19497 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19498
19499         * mini-exceptions.c: Ongoing IA64 work.
19500
19501         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19502
19503         * mini.c: Use the default optimization set when embedding. Fixes
19504         #75194.
19505
19506 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19507
19508         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19509         of trampolines to a separate file.
19510
19511         * mini-trampolines.c: New file.
19512
19513         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19514         separate file.
19515         
19516         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19517         amd64/ia64 code.
19518
19519         * mini-codegen.c: Fix cygwin build.
19520
19521 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19522
19523         * mini.c: Add some minor changes needed by the IA64 port.
19524
19525         * *-ia64.*: Ongoing IA64 work.
19526
19527 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19528
19529         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19530         trampolines into arch-independent and arch-dependent parts.
19531
19532         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19533
19534 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19535
19536         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19537
19538         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19539         the xp-regalloc-branch for amd64.
19540
19541         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19542         xp-regalloc-branch for x86.
19543
19544 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19545
19546         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19547
19548 2005-07-06  Martin Baulig  <martin@ximian.com>
19549
19550         * mini.c
19551         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19552         (mono_jit_runtime_invoke): Likewise.
19553
19554 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19555
19556         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19557         on x86 too.
19558         
19559         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19560         without loading their metadata. Reorganize the file format so exception handling+
19561         debug info is kept separate from normal method info. Create MonoJitInfo 
19562         structures for methods lazily.
19563
19564         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19565         loading metadata.
19566         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19567
19568         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19569
19570         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19571         in AOT code.
19572
19573         * mini.h: Bump AOT file version.
19574
19575 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19578
19579 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19580
19581         * Makefile.am (check-local): Call semdel-wrapper.
19582
19583 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19584
19585         * mini-x86.c: Revert the last change as it seems to break the build..
19586
19587 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19590         
19591         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19592
19593 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19594
19595         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19596         outside of the macro, so strange stuff doesn't happen with gcc4
19597         (NEW_AOTCONST_TOKEN): Likewise.
19598
19599 2005-06-28  Martin Baulig  <martin@ximian.com>
19600
19601         * mini.c (mini_class_is_system_array): New static method; use this
19602         instead of `klass->parent == mono_defaults.array_class' everywhere
19603         since this also works for the new generic array class.
19604
19605 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19606
19607         * inssel.brg: Remove warnings.
19608
19609 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * mini-ia64.c: Ongoing IA64 work.
19612
19613         * basic-float.cs: Add float->i1 conversion test.
19614
19615         * iltests.il: Add conv.u4 test.
19616
19617 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19618
19619         * inssel-long.brg: Fix bug caused by last change.
19620
19621 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19622
19623         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19624         BSDs.  Allows the x86 JIT to work on OSX86
19625
19626 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19627
19628         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19629         u4->i8 conversion.
19630
19631         * mini-ia64.c: Ongoing IA64 work.
19632
19633 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19634
19635         * mini-ia64.c: Ongoing IA64 work.
19636
19637         * driver.c: Clean up jit_code_hash as well when using --regression.
19638
19639         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19640
19641         * basic-long.cs: Add tests for long->u4 conversion.
19642
19643 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19644
19645         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19646         that we do not depend on undefined C behavior: the order stuff
19647         gets evaluated within an expression. Fixes mono when compiled on
19648         GCC 4.
19649
19650 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19651
19652         * *-ia64.*: Ongoing IA64 work.
19653
19654         * aot.c: Lower memory usage while loading AOT methods.
19655
19656         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19657
19658         * mini.h: Bump AOT file format version.
19659
19660 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19661
19662         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19663
19664 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19665
19666         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19667         not on callee assembly). Fixed some comments.
19668
19669 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19670
19671         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19672         it gets proper disassembly.
19673         (emit_method_info): Remove some dead code.
19674
19675         * mini.c (mini_method_compile): Allways allocate the GOT var in
19676         mono_method_to_ir for emulating opcodes.
19677
19678 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19679
19680         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19681         before freeing the code memory. Fixes #74990.
19682
19683         * objects.cs: Add regression test for #74992.
19684
19685         * liveness.c: Extend live ranges of arguments to the beginning of the
19686         method. Fixes #74992.
19687
19688         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19689         so it points into the faulting instruction.
19690
19691 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19694
19695         * *-ia64.*: Ongoing IA64 work.
19696
19697         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19698
19699 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19700
19701         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19702
19703         * *-ia64.*: Ongoing IA64 work.
19704
19705 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * basic-long.cs: Add tests for add/sub.ovf.
19708
19709         * basic.cs: Add tests for sub.ovf.
19710
19711         * *-ia64.*: Ongoing IA64 work.
19712
19713 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19714
19715         * *-ia64.*: Ongoing IA64 work.
19716
19717         * basic.cs: Add conv.ovf.i4.un test.
19718
19719 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19720
19721         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19722         
19723 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19724
19725         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19726
19727 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19728
19729         * *-ia64.*: Ongoing IA64 work.
19730
19731 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19732
19733         * trace.[ch]:
19734         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19735
19736 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19739
19740 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19741
19742         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19743
19744         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19745         of a call is callable by a near call.
19746
19747 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19748
19749         * mini-ia64.c: Ongoing IA64 work.
19750
19751 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19752
19753         * genmdesc.c: Make the generated array non-static.
19754
19755         * inssel-long.brg: Fix LSHR_IMM rule.
19756
19757         * *-ia64.*: Ongoing IA64 work.
19758
19759         * *-ia64.*: Ongoing IA64 work.
19760
19761 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19762
19763         * *-ia64.*: Ongoing IA64 work.
19764
19765         * *-ia64.*: Ongoing IA64 work.
19766         
19767         * mini-ia64.c: Ongoing IA64 work.
19768
19769         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19770
19771 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19772
19773         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19774         
19775         * objects.cs basic-long.cs: Move some tests to objects.cs.
19776
19777 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19778
19779         * *-ia64.*: Ongoing IA64 work.
19780
19781         * iltests.il: Add a new test.
19782
19783         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19784         newobj. Fixes #75042.
19785
19786 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19787
19788         * *-ia64.*: Ongoing IA64 work.
19789         
19790         * *-ia64.*: Ongoing IA64 work.
19791         
19792         * *-ia64.*: Ongoing IA64 work.
19793
19794         * basic.cs objects.cs: Move tests accessing static variables as well.
19795
19796         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19797
19798 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19799
19800         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19801
19802         * driver.c: Always print failed tests.
19803
19804         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19805         frame pointer.
19806
19807         * *ia64*: Ongoing IA64 work.
19808
19809 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * basic.cs: Add tests for add.ovf. Fix warnings.
19812
19813 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19814
19815         * driver.c (mono_main): Avoid crash if no argument is passed to
19816         --break;  Do not use g_error, but f_printf.   And fix all other
19817         ocurrences of the same crash.
19818
19819 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19820
19821         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19822         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19823         Fixes #74742.
19824
19825 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19826
19827         * *-ia64.*: Add beginnings of IA64 backend.
19828
19829         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19830
19831 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19832
19833         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19834         Fixes #74925.
19835
19836         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19837
19838         * mini-amd64.c: Fix a warning.
19839
19840 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19843         in float_neg. Fixes #74897.
19844
19845         * mini-amd64.c (emit_call): Fix another near call bug.
19846
19847 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19848
19849         * declsec.c: Keep the appdomain information in the structure. Added a 
19850         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19851         value gets overwritten).
19852         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19853         an MonoAppDomain member to MonoSecurityFrame.
19854         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19855         used in the stack walk. Now use a MonoArray which grow (double) when
19856         it gets full.
19857
19858 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19859
19860         * mini.c: Re-enabled runtime cleanup, since running threads should
19861         now properly stop when exiting.
19862
19863 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19864
19865         * mini-codegen.c: New file contaning the arch-independent local
19866         register allocator. Not used by any architectures yet.
19867
19868         * mini.h linear-scan.c: Merge some changes from the 
19869         mini-xp-local-regalloc branch.
19870
19871 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19872
19873         * mini-amd64.c (emit_call): Fix calls to native functions when the
19874         runtime is compiled as a shared library. Fixes #74756.
19875
19876         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19877         on a literal field. Fixes #74751.
19878
19879 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19880
19881         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19882
19883 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19884
19885         * objects.cs: Add missing null casting test.
19886
19887 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19888
19889         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19890         in wrapper methods. Also rename 'address' variable to 'offset'.
19891
19892 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19893
19894         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19895         warnings.
19896         
19897         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19898
19899         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19900         work on windows.
19901
19902 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19903
19904         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19905
19906 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19907
19908         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19909         just the last bytes.
19910
19911 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19912
19913         * aot.c (mono_compile_assembly): Fix warning.
19914
19915         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19916         by the _MSC_VER stuff.
19917
19918 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19919
19920         * inssel-long.brg: Fix #74588.
19921
19922         * cpu-amd64.md: Fix #74591.
19923
19924         * iltests.il: Add new regression tests.
19925
19926 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19927
19928         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19929         valuetype.
19930
19931 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19932
19933         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19934
19935         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19936         from Bill Middleton <flashdict@gmail.com>.
19937
19938 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19939
19940         * arrays.cs: Add new regression test. Fix warnings.
19941
19942 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19943
19944         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19945         and leakage in CKFINITE.
19946
19947         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19948         this to a null op since it is called on amd64 too.
19949
19950         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19951
19952         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19953         body since this is not used on amd64.
19954         
19955         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19956
19957         * mini-amd64.c: Remove obsolete fixmes.
19958
19959         * mini.c (print_method_from_ip): Fix debugging support.
19960
19961 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19962
19963         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19964         so that expressions that don't give much gain are not reduced.
19965         * ssapre.h: Likewise.
19966
19967 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19968
19969         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19970
19971         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19972
19973         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19974
19975 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19976
19977         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19978
19979         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19980
19981 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19982
19983         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19984         stack touching.
19985
19986         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19987
19988         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19989
19990         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19991
19992         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19993         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19994
19995         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19996
19997         * mini-x86.c: Fix up stack overflow handling.   
19998
19999         * exceptions.cs: Add new regression test.
20000
20001 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20004         mono_jit_thread_attach.
20005
20006         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20007
20008 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20009
20010         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20011         avoid calling constructors using callvirt.
20012
20013         * inssel.brg: Fix #74073.
20014
20015 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20016
20017         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20018         compilation with non-GCC compilers.
20019         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20020         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20021
20022 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20023
20024         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20025         klass->interface_offsets (will likely fix bug#74073).
20026
20027 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20028
20029         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20030
20031 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20032
20033         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20034         to amd64_div_reg_size ().
20035         
20036         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20037
20038 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20041
20042 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20043
20044         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20045
20046 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20047
20048         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20049         
20050         * mini.c (mono_precompile_assembly): Load and precompile referenced
20051         assemblies as well. Fixes #74015.
20052
20053 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20054
20055         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20056
20057 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20058
20059         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20060         a lot of checks and (anyway) permissions cannot work until corlib is 
20061         loaded.
20062
20063 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20064
20065         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20066
20067 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20068
20069         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20070         calls (fixes bug#72824).
20071
20072 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20073
20074         * mini.c: fix tail recursion elimination (see test in bug#73936).
20075
20076 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20079         some fp functions in sse2 mode.
20080
20081 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20082
20083         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20084
20085 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20086
20087         * mini.h mini.c: Add mono_get_jit_tls_key ().
20088
20089         * mini-x86.c: Enable fast TLS support on windows.
20090
20091 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20092
20093         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20094         * mini.c: Check for p/invoke method when generating code. If a
20095         p/invoke method, or it's class, isn't decorated with [Suppress
20096         UnmanagedCodeSecurity] then generate code to call System.Security.
20097         UnmanagedDemand (only if the security manager is active).
20098
20099 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20100
20101         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20102         last change as it seems to cause strange crashes.
20103         
20104 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20105
20106         * *.c: handle unsafe function pointers where needed.
20107
20108 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20109
20110         * mini.c (mono_jit_free_method): Remove the fixme too.
20111
20112 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20113
20114         * mini.c: As discussed, make the code actually free the delegate
20115         thunk now, to enable the debugging of delegate problems, use
20116         MONO_DEBUG=1 when running Mono. 
20117
20118         This takes also care of parts of the leaks as seen by Joe.
20119
20120 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20123         thread_tls_offset calculation.
20124
20125 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20126
20127         * declsec.c: Reworked linkdemand checks for icall. The previous code
20128         was using the declaration code (untrusted) and didn't work as expected
20129         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20130         specific case.
20131
20132 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20133
20134         * iltests.il: Add new localloc test.
20135
20136         * mini-amd64.c: Handle large stack allocations the same way as on
20137         windows if stack overflow handling is working.
20138         
20139         * mini-amd64.c: Allocate the signal stack using mmap.
20140
20141         * mini.c (sigsegv_signal_handler): Fix reading of context.
20142
20143         * mini-exceptions.c: Fix up stack overflow handling.
20144
20145         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20146
20147         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20148
20149         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20150
20151         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20152
20153         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20154         tramp_init functions as they are no longer needed.
20155
20156 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20157
20158         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20159         
20160         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20161
20162         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20163         
20164         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20165         support that now.
20166
20167         * mini-ops.h: Add OP_LMUL_IMM.
20168
20169         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20170         long mul/div opcodes as intrinsic.
20171
20172         * mini-amd64.c (emit_call): Handle the case when the callee might be
20173         an AOT method.
20174
20175 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20176
20177         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20178         extra safe.
20179         
20180         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20181
20182         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20183
20184 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20185
20186         * mini.c (mono_codegen): Don't leak here, to help people running
20187         monogrind.
20188
20189 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20190
20191         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20192         conversions in sse2 mode.
20193
20194         * basic-float.cs: Add regression test.
20195         
20196         * mini-amd64.c: Reenable sse2.
20197
20198 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20199
20200         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20201
20202 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20203
20204         * driver.c: Copyright text should include 2005.
20205         
20206 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20207
20208         * cpu-amd64.md (load_membase): Fix more max lengths.
20209
20210 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20211
20212         * cpu-amd64.md (load_membase): Fix max length.
20213
20214         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20215
20216         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20217
20218         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20219         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20220
20221         * basic-float.cs: Add rounding regression test.
20222
20223         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20224
20225 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20226
20227         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20228         structures in registers for pinvoke wrappers.
20229
20230 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20231
20232         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20233
20234 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20235
20236         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20237         wrapper to mono_jit_thread_attach.
20238
20239         * mini.c (mini_jit_thread_attach): New jit icall.
20240
20241         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20242         native->managed wrappers.
20243
20244         * exceptions.cs: Add new regression test.
20245
20246         * mini.c (optimize_branches): Check regions in the cbranch to throw
20247         block case as well. Fixes #73242.
20248
20249 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20250
20251         * mini.c: thread safety fixes.
20252
20253 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20254
20255         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20256         patching stuff, since delegates use jump trampolines so there is
20257         no caller.
20258
20259         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20260         jump trampolines.
20261         
20262         * tramp-amd64.c: Fix build.
20263
20264         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20265         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20266
20267         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20268         Rename this to mono_arch....
20269         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20270
20271         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20272
20273         * mini-amd64.c (emit_call): If both the caller and the callee is
20274         guaranteed to have 32 bit addresses, emit a normal call.
20275
20276         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20277
20278         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20279         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20280         method_ptr inside delegates.
20281
20282 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20283
20284         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20285         invalidated. Fixes #73001.
20286
20287         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20288
20289         * mini-x86.c: Only use stdcall for pinvokes on windows.
20290
20291 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20292
20293         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20294         * mini-x86.c: remove unreliable __thread var offset detection,
20295         use the correct accessors and enable by default.
20296
20297 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20298
20299         * mini.c (mono_jit_free_method): Fix memory leak.
20300
20301 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20302
20303         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20304
20305 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20306
20307         * cpu-amd64.md: Fix lengths of atomic opcodes.
20308
20309 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20310
20311         * driver.c: try to not imply using ICU is any good.
20312
20313 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20314
20315         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20316         functions as inline ops.
20317
20318         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20319         some Interlocked functions as inline ops.
20320
20321         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20322
20323         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20324
20325         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20326
20327         * mini.c: Add support for OP_NOT_TAKEN.
20328
20329         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20330         structures in registers for pinvoke wrappers.
20331
20332         * mini-amd64.c: Fix warnings.
20333
20334 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20335
20336         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20337
20338         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20339
20340         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20341         address instead of loading the address from it.
20342
20343         * mini-x86.c: Add support for returning small structs in registers
20344         on Win32. Fixes part of #70864.
20345         
20346 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20347
20348         * trace.c (get_token): Improve error checking.
20349
20350 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20351
20352         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20353
20354 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20355  
20356         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20357         it can be reused for MonoClass.
20358         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20359         _LINKDEMAND.
20360
20361 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20362
20363         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20364         instead of a MonoReflectionMethod. The method information wasn't used
20365         when displaying SecurityException details (but will be now).
20366
20367 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20368
20369         * Makefile.am : windows build fix.
20370
20371 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20372
20373         * iltests.il: Add new regression test.
20374
20375         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20376         #72522.
20377
20378 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20379  
20380         * mini.c: Moved linkdemand check into helper function check_linkdemand
20381         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20382         LDFTN, LDVIRTFTN).
20383
20384 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20385
20386         * declsec.c: Added statistics counter for different kinds of 
20387         LinkDemands.
20388         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20389         (and commented) declaration.
20390         * mini.c: Added statistics counter for security Demand code 
20391         generation. Added display of security statistics.
20392
20393 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20394
20395         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20396         Fix compilation errors under gcc-2.95.
20397
20398 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20399
20400         * mini.c, driver.c: Use the new jit trampoline hashtable
20401
20402 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20403
20404         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20405
20406 2005-02-11  Martin Baulig  <martin@ximian.com>
20407
20408         * debug-mini.c (mono_debug_close_method): Free the line number array.
20409
20410 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20411
20412         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20413         icalls.
20414
20415         * mini.h: Bump AOT file format version. 
20416
20417 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20418
20419         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20420         APTC and P/Invoke.
20421         * declsec.h: Added macros to get/set lazyly initialized security 
20422         informations about assemblies. Added new enum for different type of
20423         possible LinkDemand violation. Added function to check LinkDemands.
20424         * mini.h: Added a field to MonoCompile to hold any security violation
20425         detected when JITting a method (so it can be thrown later).
20426         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20427         and CEE_CALLVIRT. Added code to throw exception at the end of
20428         mini_method_compile (note: the exception is unhandled right now).
20429
20430 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20431
20432         * mini.c, jit-icalls.c: use the managed implementation of
20433         memset for initobj and memset, to avoid managed <-> unmanaged
20434         transitions.
20435
20436 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20437
20438         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20439         optimization if it would need a GOT var.
20440
20441         * basic.cs: Add tests for constant propagation and switch statements.
20442
20443         * ssa.c: Fix out-of-range constant propagation and switch statements.
20444
20445 2005-02-09    <vargaz@freemail.hu>
20446
20447         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20448
20449 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20450
20451         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20452
20453 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20454
20455         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20456
20457 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20458
20459         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20460         arithmetic operations.
20461
20462 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20463
20464         * mini-ppc.c: add a workaround for broken user code that
20465         DllImports vararg functions with non-vararg signatures.
20466
20467 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20468
20469         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20470         meaningfull error message for assemblies written in Managed C++.
20471
20472         * tramp-amd64.c mini-amd64.h: Add support for 
20473         create_trampoline_from_token ().
20474
20475         * aot.c mini-x86.c abcremoval.c: Applied patch from
20476         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20477
20478 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20479
20480         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20481         which takes a MonoImage/token as parameter instead of a MonoMethod.
20482
20483         * aot.c: Use the new trampoline for initializing vtables.
20484
20485         * aot.c: Add support for ldfld/stfld_remote wrappers.
20486
20487         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20488         rules for compare <MEM>, IMM.
20489
20490         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20491
20492         * aot.c: Handle inherited finalizers correctly.
20493
20494 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20495
20496         * inssel.brg (stmt): Add a missing _setup_... ().
20497
20498         * aot.c: Save some parts of the class state to the AOT file and use it
20499         to recompute that state when a class is initialized.
20500
20501         * mini.c: Install AOT hooks into the runtime.
20502
20503         * mini.h: Bump AOT file format version.
20504         
20505         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20506         Fixes #72148.
20507
20508         * iltests.il: Add new test.
20509
20510 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20511
20512         * mini.c: fix typo.
20513
20514 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20515
20516         * mini.c: setup the statistical profiler in the thread attach
20517         callback to cope with the new single thread code.
20518
20519 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20520
20521         * mini-ppc.c: ensure we have enough room for the profiler
20522         calls (fixed bug#72084).
20523
20524 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20525
20526         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20527         it.
20528
20529 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20530
20531         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20532
20533 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20534
20535         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20536         to succesfully execute parrotbench).
20537         * ssapre.h: Likewise.
20538
20539 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20540
20541         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20542         variable for stores to method arguments (fixes a SSAPRE issue).
20543
20544 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20545
20546         * mini.c: handle value types in dup, fixes gen-112.cs.
20547
20548 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20549
20550         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20551         sequence for calls in dynamic methods to avoid thunks.
20552
20553 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20554
20555         * mini.c: correctly remove dynamic methods from the hashtable.
20556
20557 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20558
20559         * driver.c: Disabled SSAPRE until fix the bug that appears
20560         in IronPython's parrotbench.
20561
20562 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20563
20564         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20565
20566         * mini.c (mono_method_to_ir): Revert the previous change.
20567         
20568         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20569         when AOT compiling.
20570
20571         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20572         mono_jit_info_table_find () etc. when running under valgrind.
20573
20574         * inssel.brg: Fix warnings.
20575
20576         * mini-exceptions.c: Fix warnings.
20577
20578 2005-01-31  Martin Baulig  <martin@ximian.com>
20579
20580         * driver.c (compile_all_methods_thread_main): Don't try to compile
20581         generic methods or anything which has type parameters.
20582
20583 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20584
20585         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20586
20587         * TestDriver.cs: Add --verbose flags.
20588
20589         * graph.c ssa.c: Fix 64 bit warnings.
20590         
20591         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20592         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20593         Fix 64 bit warnings.
20594
20595         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20596         variable not spotted by gcc.
20597         
20598         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20599         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20600         X86_COMPARE_MEMBASE opcodes.
20601
20602         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20603
20604 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20605
20606         * *: MonoMethod->signature might be NULL now. You *MUST* use
20607         mono_method_signature.
20608
20609 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20610
20611         * driver.c (compile_all_methods_thread_main): Compile the methods
20612         without invoking cctors.
20613
20614 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20615
20616         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20617         * basic-calls.cs: test for the above.
20618
20619 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20620
20621         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20622         MonoJitInfo changes.
20623
20624 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20625
20626         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20627         eagerly if it contains dynamic methods.
20628         
20629         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20630
20631         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20632         trace, it is now computed by an icall from trace_ips.
20633         
20634         * mini-exceptions.c: Fix a warning.
20635
20636 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20637
20638         * mini-exceptions.c: don't bother getting stack trace info if
20639         it's not going to be used.
20640
20641 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20642
20643         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20644         ssapre-mini-ops.h.
20645
20646 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20647
20648         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20649
20650         * aot.c: Avoid calling mono_method_get_header () if not needed.
20651
20652         * mini.h: Bump AOT file format version.
20653         
20654         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20655
20656         * mini.c (mono_print_tree): Print more info for calls.
20657
20658 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20659
20660         * declsec.h: Remove warning by adding missing include for marshal.h
20661
20662 2005-01-26  Martin Baulig  <martin@ximian.com>
20663
20664         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20665         `ip' twice.
20666
20667 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20668
20669         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20670         flags.
20671
20672         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20673
20674         * aot.c (mono_compile_assembly): Fix a warning.
20675
20676 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20677
20678         * declsec.c: Look for security attributes on the original MonoMethod 
20679         (and not the wrapped one). This fix permissions on icalls.
20680
20681 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20682
20683         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20684
20685         * mini.c (mono_allocate_stack_slots): Add a fixme.
20686
20687         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20688
20689 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20690
20691         * inssel.brg: optimize casts of sealed types (more
20692         optimizations waiting for fixes in remoting).
20693
20694 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20695
20696         * inssel.brg (stmt): Add another dummy rule.
20697
20698         * driver.c: Fix warnings.
20699
20700         * driver.c (mono_main): If running under valgrind, instruct glib to use
20701         the system allocation functions so valgrind can track the memory
20702         allocated by the g_... functions.
20703
20704         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20705
20706         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20707
20708         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20709
20710         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20711         variables in try regions.
20712
20713         * mini.c (mini_method_compile): Don't disable optimizations on large
20714         methods when AOT compiling.
20715
20716         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20717         allocate stack slots. Not yet used.
20718
20719 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20720
20721         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20722
20723 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20724
20725         * mini-ppc.c: make the branch info relative as the code
20726         buffer can be reallocated.
20727
20728 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20729
20730         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20731         * driver.c: Removed the AOT/security restriction. Now initialize the
20732         security manager (in metadata) if --security is used.
20733         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20734         rather than the pointer to declarative security, when AOT is used.
20735
20736 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20737
20738         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20739         basic blocks, reduced intrinsic exception throwing code size.
20740
20741 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20742
20743         * driver.c (mini_usage): Reorder the usage screen.
20744
20745 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20746
20747         * mini.c (mono_resolve_patch_target): Fix warning.
20748
20749 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20750
20751         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20752         previous patch.
20753
20754         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20755
20756         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20757         breaks the amd64 build.
20758
20759         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20760         register allocation. Fixes #71454.
20761
20762         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20763
20764         * arrays.cs: Add new regression test.   
20765
20766 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20767
20768         * ssapre.c: Turned usage of snprintf to GString.
20769         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20770         (I left it on by mistake in my previous commit).
20771
20772 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20773
20774         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20775         on cond branch optimization (fixes bug# 71515).
20776
20777 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20778
20779         * abcremoval.c: Fixed bug 71062.
20780         * abcremoval.h: Likewise.
20781
20782 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20783
20784         * mini.c: Added a new functionality to optimize_branches, the removal
20785         of useless basic blocks, and fixed some problem in the removal of
20786         critical edges; some utility functions added for both purposes.
20787         * ssapre.c: Added complex expression support, and fixed bug 70637.
20788         * ssapre.h: Likewise.
20789         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20790         enabled in SSAPRE.
20791         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20792         * driver.c: Re-enabled SSAPRE.
20793
20794 2005-01-19  Martin Baulig  <martin@ximian.com>
20795
20796         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20797         the result of mono_get_method_constrained().
20798
20799 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20800
20801         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20802         manager.
20803
20804 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20805
20806         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20807         be detected.  Fixes #59296.
20808
20809 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20810
20811         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20812         which can happen. Fixes #71361.
20813
20814 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20815
20816         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20817         manager.
20818
20819 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20820
20821         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20822         appdomain-unload.exe to fail.
20823         
20824         * mini.c: Fix some memory leaks.
20825
20826 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20827
20828         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20829         Fixed bug and sped up some codepaths.
20830
20831 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20832
20833         * mini.c: Fix some memory leaks.
20834
20835         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20836         conversion.
20837
20838         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20839
20840         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20841         #71320.
20842
20843         * iltests.il: Add regression test for #71320.
20844
20845 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20846
20847         * mini.c (mono_codegen): Fix installation of profiler hooks.
20848
20849         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20850
20851 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20852
20853         * mini.h, mini.c, cfold.c: optimize access to enum
20854         readonly fields, too. Eval conditional branches if possible
20855         to perform unreachable code removal in more cases.
20856
20857 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20858
20859         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20860
20861         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20862         code manager.
20863
20864         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20865         WinXP DEP. Fixes #71244.
20866
20867 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20868
20869         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20870
20871 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20872
20873         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20874
20875 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20878         changes.
20879
20880         * mini.h: Bump AOT version.
20881
20882         * mini.h (MonoCompile): Change exvar to a hash table.
20883
20884         * mini.c: Allocate a separate exvar for each handler block.
20885
20886         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20887
20888         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20889         ex var with the pending exception and only throw if the two are equal.
20890         Fixes #68552.
20891         
20892         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20893
20894         * mini-x86.c: Fix warnings.
20895
20896         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20897         used by all the ports now.
20898
20899         * aot.c: Add write-symbols and save-temps options.
20900
20901 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20902
20903         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20904
20905 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20906
20907         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20908         operations.
20909
20910         * tramp-s390.c: Check vtable slot belongs to the domain.
20911
20912         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20913         as per other platforms.
20914
20915         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20916
20917 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20918
20919         * driver.c: we don't run the Main() code in a subthread anymore.
20920
20921 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20922
20923         * mini.c: added experimental rtc support in the statistical
20924         profiler: if the user has the permission, more accurate statistics
20925         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20926         The MONO_RTC value must be restricted to what the linux rtc allows:
20927         power of two from 64 to 8192 Hz.
20928
20929 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20930
20931         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20932
20933 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20934
20935         * mini-ppc.c: better icache flush for smp.
20936
20937 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20938
20939         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20940
20941         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20942         amd64 port, not yet used.
20943
20944 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20945
20946         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20947         a struct type.
20948
20949 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20950
20951         * driver.c: Added --security option to activate the security manager.
20952         Right now this will allow code generation for declarative demands and
20953         is disabled when AOT is specified.
20954         * mini.c: Add code generation for declarative security demands.
20955         * mini.h: Add mono_use_security_manager as an extern gboolean.
20956
20957 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20958
20959         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20960         emitting more dense assembly code.
20961
20962         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20963         exception throwing stuff.
20964
20965 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20966
20967         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20968         dead code.
20969
20970         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20971         left in by mistake.
20972
20973         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20974         fixed.
20975
20976         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20977
20978         * tramp-*.c: Only patch vtable slots if the object is in the current
20979         domain. Fixes appdomain-unload.exe.
20980
20981         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20982         
20983         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20984         x86 branch.
20985
20986 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20987
20988         * mini.c (reverse_branch_op): New helper function.
20989
20990         * mini.c (optimize_branches): Run the new optimization only on 
20991         platforms which support it. Also reverse all kinds of branches.
20992
20993         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20994
20995         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20996         a throw statement.
20997
20998         * mini.c (optimize_branches): Reverse not-equals branches if the false
20999         bblock is a throw. This happens a lot of time with argument checking in
21000         corlib.
21001
21002         * mini.c (mono_codegen): Add support for placing basic blocks after
21003         the function epilogue.
21004
21005         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21006         function epilogue.
21007         
21008 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21009
21010         * mini.c (setup_stat_profiler): Only set this up if the platform
21011         supports ITIMER_PROF.
21012
21013 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21014
21015         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21016         previous patch.
21017
21018         * inssel.brg: Fix a warning.
21019
21020 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21021
21022         * mini.c: added support for statistical profiler 
21023         (run with: --profile=default:stat).
21024
21025 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21026
21027         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21028
21029         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21030
21031         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21032         related to global registers from the amd64 port.
21033
21034 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21035
21036         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21037
21038         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21039         with global registers.
21040         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21041
21042         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21043
21044 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21045
21046         * debug-mini.c (encode_value): Fix off-by-one.
21047
21048         * aot.c (encode_value): Likewise.
21049
21050         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21051
21052 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21053
21054         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21055         AOT.
21056
21057         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21058         
21059         * aot.c (emit_method_info): Increase size of temp buffer.
21060
21061         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21062         the AOT case.
21063
21064 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21065
21066         * aot.c (emit_method_info): Fix build.
21067         
21068         * aot.c: Further rework of the AOT file format to reduce the size of
21069         the method info data.
21070
21071         * mini.h: Bump AOT file format version.
21072
21073 2004-12-27  Martin Baulig  <martin@ximian.com>
21074
21075         * mini.c (mini_get_method): New static method; call
21076         mono_get_method_full() and mono_get_inflated_method().
21077         (mono_method_to_ir): Use mini_get_method() instead of
21078         mono_get_method_full(). 
21079
21080 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21081
21082         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21083
21084 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21085
21086         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21087
21088         * inssel-amd64.brg: Add some optimization rules.
21089
21090 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21091
21092         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21093         standard not GC'd stuff is fine.
21094
21095 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21096
21097         * aot.c: Rework the AOT file format to get rid of most of the global
21098         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21099
21100         * mini.h: Bump AOT file format version.
21101         
21102 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21103
21104         * mini.h: Bump AOT file format version.
21105
21106         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21107         address is inside a GOT.
21108
21109         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21110
21111         * cpu-pentium.md: Increase the maximum size of some instructions which
21112         might involve a got access.
21113         
21114         * mini.c (get_method_from_ip): Another debug helper function.
21115
21116         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21117         when got var accesses are created during the decompose phase.
21118
21119         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21120
21121         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21122         argument mini_compile_method and to MonoCompile, and use this to
21123         determine whenever a given method is compiled for AOT. This allows the
21124         other methods compiled during AOT compilation to be free of AOT stuff,
21125         so the backends does not need to add special support for them by
21126         creating a fake GOT etc.
21127
21128         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21129         longer needed.
21130
21131 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21132
21133         * mini.c (mono_method_to_ir): It turns out that some of the
21134         x-appdomain wrappers are lax with types, so just ignore this for
21135         all wrappers.
21136
21137         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21138         at the vtable->klass. If it is non-shared code we can just use the
21139         vtable.
21140
21141 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21142
21143         * mini-ppc.c: access MonoDomain from tls, too.
21144
21145 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21146
21147         * declsec.c: Removed unused variable (and related warning ;-)
21148
21149 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21150
21151         * iltests.il: New test for LDELEMA on an array of ref types.
21152
21153         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21154         all ldelema's on reftypes.
21155         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21156         it was the wrong place to put it.
21157
21158         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21159         register to pop to make this cleaner, at the request of Paolo.
21160
21161 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21162
21163         * mini-ops.h (OP_GETHASHCODE): New op.
21164
21165         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21166
21167         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21168         operation.
21169
21170         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21171         by 25%.
21172         
21173         * mini-x86.c (mono_arch_output_basic_block): Rather than
21174
21175         add ebp, 4
21176
21177         Emit
21178
21179         pop edx
21180
21181         The first is 3 bytes while the second is 1. This saves 36 kb on
21182         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21183         see a small boost because of icache locality.
21184
21185         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21186
21187 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21188
21189         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21190         started code sharing with the generic code.
21191
21192 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21193
21194         * mini-ppc.c, cpu-g4.md: added code for direct access to
21195         tls data slots.
21196
21197 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21198
21199         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21200          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21201         to OP_TLS_GET.
21202
21203 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21204
21205         * declsec.c|h: Added functions to cache the declarative stack modifiers
21206         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21207         structure.
21208         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21209         created. Register internal calls for System.Security.SecurityFrame::
21210         _GetSecurityFrame and _GetSecurityStack.
21211         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21212         the definitions for the new stack walk/callback mechanism.
21213         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21214         first security frame for LinkDemands and InheritanceDemands) and
21215         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21216         from lupus.
21217         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21218         walk initialization (lupus).
21219
21220 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21221
21222         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21223         idiom.
21224         (handle_loaded_temps): Do not create a temporary variable for
21225         things that we know are temps. They will never be modified.
21226         (mono_spill_call): Set MONO_INST_IS_TEMP
21227         (mono_emulate_opcode): ditto
21228         (emit_tree): ditto
21229         (mono_method_to_ir.CEE_DUP): ditto
21230
21231 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21232
21233         * mini.c (type_to_eval_stack_type): Make this handle the void type
21234         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21235         (emit_tree): use ip_in_bb to special case some common idioms
21236         Update all callers to pass in the IP.
21237         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21238
21239         This gives us a nice 2% speedup in mcs bootstrap.
21240
21241         * mini-x86.c (peephole_pass): Peephole pass to make
21242         mov  [foo], eax
21243         push [foo]
21244
21245         into
21246
21247         mov [foo], eax
21248         push eax
21249
21250         * mini.c (ip_in_bb): new method.
21251         (mono_method_to_ir): use this method rather than doing the hash
21252         lookup ourselves.
21253
21254         * linear-scan.c (mono_linear_scan): When expiring actives, you
21255         don't need to keep around variables that expire on this
21256         instruction. This makes it so that:
21257              a = b + 1
21258         will turn into:
21259              store (ebx add (ebx, 1))
21260         which will become
21261              add ebx, 1
21262
21263 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21264
21265         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21266         combination to avoid doing two copies. Fix up problems with previous
21267         patch.
21268
21269         * mini.c: Fix 64 bit warnings.
21270
21271         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21272
21273 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21274
21275         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21276         changes from the x86 code.
21277
21278         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21279
21280 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21281
21282         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21283         throwing code to reduce its size, unify the AOT and non-aot code and 
21284         get rid of relocations in the AOT case.
21285
21286         * mini-x86.h mini.c exceptions-x86.c 
21287         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21288         raise corlib exceptions which doesn't require relocations in the 
21289         caller.
21290
21291         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21292
21293 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21294
21295         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21296         needed.
21297
21298         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21299         in the AOT case.
21300
21301 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21302
21303         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21304         with add function when used from Inc/dec atomic 
21305         functions. Re-enabled optimization on x86.
21306         * mini-ops.h: renamed atomic_add functions to
21307         allow _add to match the Interlocked::Add and
21308         _add_next to match Interlocked::Inc/Dec.
21309
21310 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21311
21312         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21313         linking of BBs to the end BB, and enabled SSAPRE also with
21314         consprop and copyprop (which was prevented by that bug).
21315
21316 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21317
21318         * mini-x86.c: disabling the Interlocked optimizing code. 
21319
21320 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21321
21322         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21323         file version check.
21324         
21325 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21326
21327         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21328         interlocked optimization due lack of support on x86, rewrote 
21329         exchange to take into account that base may be in eax.
21330         
21331         xsp works again; activated Interlocked optimizing code.
21332         
21333 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21334
21335         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21336
21337 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21338
21339         * mini-ops.h: Add new opcodes.
21340
21341         * mini.h: Add new patch types. Add got_var to MonoCompile.
21342
21343         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21344         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21345         make it work with all kinds of patchable code.
21346
21347         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21348         address of the GOT, and referencing entries in the GOT.
21349
21350         * mini.c: Add code to load the GOT address if needed by an opcode.
21351
21352         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21353         independent AOT code on the x86 using an elf-style Global Offset Table.
21354
21355 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21356
21357         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21358
21359 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21360
21361         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21362         when running xsp.
21363
21364 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21365
21366         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21367         of Interlocked:Increment/Decrement/Add as inline ops.
21368         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21369
21370 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21371
21372         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21373         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21374
21375 2004-12-12  Duncan Mak  <duncan@ximian.com>
21376
21377         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21378         again. `patch_info->table_size' is no longer valid after Zoltan's
21379         commit #37636.
21380
21381 2004-12-12  Martin Baulig  <martin@ximian.com>
21382
21383         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21384         if we are the "real" method, ie. not an inlined method inside it.
21385
21386 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21387
21388         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21389         before we look in the special fields table. This fixes
21390         ../tests/thread-static-init.cs.
21391
21392 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21393
21394         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21395         for Array get_Rank and get_Length. Fixes bug #70465.
21396
21397 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21398
21399         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21400         separate structure to reduce the size of MonoJumpInfo.
21401
21402 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21403
21404         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21405
21406 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21407
21408         * mini.c (mini_get_inst_for_method): Changed to allow ports
21409         to return a MonoInst instead of opcode 
21410         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21411         
21412         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21413         Allow ports to return a created MonoInst instead of op-code, will enable
21414         new optimizations.
21415         (renamed mini_get_opcode_for_method to better reflected the functionality)
21416
21417 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21418
21419         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21420
21421 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21422
21423         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21424         Fixes #69985.
21425
21426 2004-12-08  Martin Baulig  <martin@ximian.com>
21427
21428         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21429         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21430
21431 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21432
21433         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21434         correctly.
21435
21436         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21437         arithmetic.
21438
21439 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21440
21441         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21442
21443 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21444
21445         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21446         bug introduced by the previous patch.
21447
21448 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21449
21450         * mini-ppc.c, objectc.cs: handle large structs passed by value
21451         (fixes bug #69972).
21452
21453 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21454
21455         * mini-ppc.c: OP_ARGLIST implementation from
21456         Geoff Norton  <gnorton@customerdna.com>.
21457
21458 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21459
21460         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21461         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21462
21463 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21464
21465         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21466
21467 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21468
21469         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21470         support.
21471
21472 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21473
21474         * mini-sparc.c: Zero out localled-ed memory.
21475
21476         * iltests.il: Add tests for zeroing out localloc-ed memory.
21477
21478 2004-12-04  Martin Baulig  <martin@ximian.com>
21479
21480         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21481         mono_method_get_signature_full().       
21482
21483 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21484
21485         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21486         and some utility functions (always for SSAPRE), integrated SSAPRE.
21487         * mini.h: Likewise.
21488         * driver.c: Added ssapre option.
21489         * ssa.c: Small fix on OP_ARG handling.
21490         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21491         * Makefile.am: Likewise.
21492
21493 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21494
21495         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21496         now in the xp code.
21497
21498         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21499         icall.
21500
21501 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21502
21503         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21504         
21505         * cpu-s390.md : Increase instruction length of oparglist.
21506
21507         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21508
21509 2004-11-30  Martin Baulig  <martin@ximian.com>
21510
21511         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21512         virtual generic methods.  We call a special helper_compile_generic_method()
21513         icall to retrieve the method from the vtable, inflate and compile
21514         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21515
21516         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21517
21518 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21519
21520         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21521
21522 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21523
21524         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21525         Fixes #69929.
21526
21527 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21528
21529         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21530         platforms with PIC aot.
21531
21532 2004-11-28  Martin Baulig  <martin@ximian.com>
21533
21534         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21535         Fixes gen-112.cs.
21536
21537 2004-11-28  Martin Baulig  <martin@ximian.com>
21538
21539         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21540         the result of mono_type_get_underlying_type() to check whether
21541         we're byref.
21542
21543 2004-11-26  Martin Baulig  <martin@ximian.com>
21544
21545         * mini.c
21546         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21547         in the g_assert().
21548
21549 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21550
21551         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21552         the same way as the other arguments so they won't get clobbered.
21553
21554         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21555         calls through R11 since it is clobbered by the trampoline code.
21556
21557 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21558
21559         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21560         pick up in-tree mscorlib.dll.
21561
21562 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21563
21564         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21565
21566         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21567         runtime data/code are now stored in a table similar to the GOT in ELF. 
21568         This allows the code itself to be position independent.
21569
21570         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21571         loading changes.
21572
21573         * aot.c: Attach ELF type (object/function) directives to all global
21574         symbols.
21575
21576         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21577
21578         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21579
21580         * mini-amd64.h: Turn on PIC AOT code.
21581
21582         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21583         returning the offset within an OP_AOTCONST instruction where the GOT
21584         offset needs to be added.
21585
21586         * mini.h: Bump AOT file format version.
21587
21588 2004-11-25  Martin Baulig  <martin@ximian.com>
21589
21590         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21591         uninflated generic methods.
21592
21593 2004-11-25  Martin Baulig  <martin@ximian.com>
21594
21595         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21596
21597 2004-11-24  Martin Baulig  <martin@ximian.com>
21598
21599         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21600         original klass (this only applies for generic instances).
21601
21602 2004-11-24  Martin Baulig  <martin@ximian.com>
21603
21604         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21605         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21606         that array).
21607
21608 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21609
21610         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21611         localloc. Fixes #69678.
21612
21613         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21614         
21615 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21616
21617         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21618         used SSE registers on pinvoke calls. Fixes #69774.
21619
21620 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21621
21622         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21623         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21624
21625 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21626
21627         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21628         Refer directly to the mcs/ tree.
21629
21630 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21631
21632         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21633         Check if a trampoline for a synchronized method is required. 
21634
21635 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21636
21637         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21638         with localloc if needed. Throe arithmetric exception in
21639         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21640         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21641
21642 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21643
21644         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21645         types before switching on type.  Fixes #69622.
21646
21647 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21648
21649         * Makefile.am (check-local): New.  Integrate into 'make check'.
21650         (MCS,RUNTIME): Define using in-tree mono and mcs.
21651         (ILASM): New.
21652         (%.exe): Use $(ILASM).
21653
21654 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21655
21656         * mini-ppc.c: adjust initial prolog size (bug #69691).
21657
21658 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21659
21660         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21661         #69664.
21662
21663 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21664
21665         * Makefile.am (clean-local): Rename from 'clean'.
21666
21667 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21668
21669         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21670         to mono_arch_is_int_overflow. 
21671         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21672         SIGFPE events.
21673
21674 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21675
21676         * declsec.c|h: New files to support declarative security attributes.
21677         Added function to check if a method has (applicable) security.
21678         * mini.c|h: Add check for declarative security attributes in
21679         mono_method_check_inlining.
21680         * Makefile.am: Added declsec.c and declsec.h to the build.
21681
21682 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21683
21684         * mini.c, mini.h: update to keep dynamic code info per-domain.
21685
21686 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21687
21688         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21689         (mini_init): Get rid of it from here too.
21690
21691 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21692
21693         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21694         implemented OP_RETHROW (patch by Geoff Norton
21695         <gnorton@customerdna.com>).
21696
21697 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21698
21699         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21700         between appdomains.  Fixes appdomain-unload on PPC.
21701
21702 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21703
21704         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21705         mini-exceptions.c: handle the new wrapper types.
21706         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21707         token value as a MonoClass* when compiling a wrapper.
21708         mono_jit_create_remoting_trampoline now takes an additional
21709         MonoRemotingTarget parameter.
21710         
21711 2004-11-10  Martin Baulig  <martin@localhost>
21712
21713         * mini.c (mono_method_to_ir): Use `generic_container->context'
21714         rather than creating a new one.
21715
21716 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21717
21718         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21719
21720         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21721
21722 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21723
21724         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21725         the experimental aot cache stuff.
21726
21727 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21728
21729         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21730         mini-exceptions.c: update to exception clause structure changes.
21731
21732 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21733
21734         * exceptions-x86.c (throw_exception): Fix warnings.
21735
21736         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21737         for OP_RETHROW.
21738
21739 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21740
21741         * exceptions-sparc.c (get_throw_exception): Really fix this.
21742
21743 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21744
21745         * tramp-*.c: we no longer support icalls without wrappers, so
21746         a bit of code can be removed here
21747
21748 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21749
21750         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21751         patch.
21752
21753         * cpu-sparc.md: Add op_rethrow.
21754
21755         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21756
21757         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21758
21759         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21760         * mini-ops.h: Add OP_RETHROW.
21761
21762         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21763
21764         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21765
21766 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21767         
21768         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21769         Makes the output much easier to read
21770
21771 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21772
21773         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21774         prevents another huge leak when compiling with ssa. Secondly, the
21775         performance of doing this rather than freeing the lists is much
21776         better. GList does a lock every time you allocate a list link,
21777         so that it can use a memory pool. So, it is better to just use
21778         a memory pool of our own.
21779         
21780         * ssa.c, linear-scan.c: replace g_list_remove_link with
21781         g_list_delete.  The remove one does not free the GList, so we were
21782         leaking memory. On -O=all --compile-all with corlib, this cut down
21783         3 MB of allocations.
21784
21785 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21786
21787         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21788
21789         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21790
21791         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21792         into a new function mono_create_jit_trampoline ().
21793
21794 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21795
21796         * trace.c (get_spec): Allow tracing of classes without a namespace.
21797
21798 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21799
21800         * mini.c: Fix pointer overwrite in mini_method_compile.
21801
21802 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21803
21804         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21805         The darwin ABI needs some special handling for 1 and 2 byte structs
21806         Lets use lbz/lhz instead of lwz everywhere.
21807         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21808         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21809         Use stb/sth for the former, and put the latter always on stack instead of in
21810         argument registers.
21811
21812 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21813
21814         * trace.c (is_filenamechar): Add '_'.
21815
21816 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21817
21818         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21819
21820         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21821
21822 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21823
21824         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21825         depends on libmonogc. Fixes #68805.
21826
21827 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21828
21829         * mini.c (mono_jit_free_method): Provide extra information for
21830         this error.  Currently this leaks, but will be turned into a
21831         developer option in the future.
21832
21833 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21836
21837 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21838
21839         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21840         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21841         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21842
21843 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21844
21845         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21846         trampolines for AOT code.
21847
21848 2004-10-22    <vargaz@freemail.hu>
21849
21850         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21851         constructed types. Fixes #68136.
21852
21853 2004-10-21  Martin Baulig  <martin@ximian.com>
21854
21855         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21856         if it returns true, unwind the stack to the call instruction.
21857
21858 2004-10-21    <vargaz@freemail.hu>
21859
21860         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21861
21862         * mini.h: Bump AOT version number.
21863
21864         * objects.cs: Add another test for unbox trampolines.
21865
21866         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21867         valuetype methods.
21868
21869 2004-10-20    <vargaz@freemail.hu>
21870
21871         * driver.c: Add SHARED to the set of optimizations tested.
21872
21873         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21874
21875         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21876         used by CEE_NEWARR.
21877
21878         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21879
21880 2004-10-20  Martin Baulig  <martin@ximian.com>
21881
21882         * mini-exceptions.c (mono_handle_exception): Call
21883         mono_debugger_handle_exception() to tell the debugger about
21884         catch/finally clauses.
21885
21886 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21887
21888         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21889
21890         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21891         #68447.
21892
21893 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21894
21895         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21896         methods as their native size, fixed bug #57543, #57545.
21897         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21898         This saves a temporary register and mullw call down into 1 (minor perf
21899         increase for cases like sum = sum * 5;  This use to translate into:
21900             li r11,5
21901             mullw r28,r28,r11
21902         It now translates to
21903             mulli r28,r28,5
21904
21905 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21906
21907         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21908         #68388.
21909
21910 2004-10-11  Martin Baulig  <martin@ximian.com>
21911
21912         * mini.c (mono_method_to_ir): If we're a generic method, get the
21913         MonoGenericContainer from our MonoMethodNormal and create a
21914         MonoGenericContext from it.
21915
21916 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21917
21918         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21919
21920         * basic-long.cs: Add test for checked i8->i2 cast.
21921
21922 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21923
21924         * inssel-ppc.brg: added a couple of speedup rules.
21925
21926 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21927
21928         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21929         to speed up rebuilds.
21930
21931 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21932
21933         * mini-s390.c: Minor fix to OP_OR_IMM.
21934
21935 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21936
21937         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21938         better. Fixes appdomain-unload.exe on sparc.
21939
21940 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21941
21942         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21943         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21944         see bug 67324.
21945
21946 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21947
21948         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21949
21950 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21951
21952         * mini.c: Always generate a field read/write wrapper for members
21953         of the class MarshalByRefObject since the actual instance could
21954         be a CBO.
21955
21956 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21957
21958         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21959
21960 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21961
21962         * driver.c mini.h trace.c: Move the setting of the main assembly into
21963         a separate function called mono_trace_set_assembly () and call it after
21964         actually loading the main assembly. Fixes #66872.
21965
21966 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21967
21968         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21969         using the code manager.
21970
21971 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21972
21973         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21974
21975 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21976
21977         * cpu-amd64.md: Fix bug in previous patch.
21978         
21979         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21980         #66650.
21981
21982 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21983
21984         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21985         mini-exceptions.c: updates for changed stack walk interface.
21986
21987 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21988
21989         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21990
21991 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21992
21993         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21994
21995 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21996
21997         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21998         since assemblies can't be unloaded.
21999         
22000 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22001
22002         * cpu-amd64.md: Fix more instruction lengths.
22003
22004         * cpu-amd64.md: Fix lengths of some instructions.
22005
22006 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22007
22008         * inssel.brg: Make the array ldelema check aot friendly.
22009
22010 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22011
22012         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22013
22014         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22015
22016 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * mini-x86.c: Fix build.
22019
22020         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22021         mono_type_get_underlying_type () helper function to simplify code.
22022         
22023 2004-09-09  Martin Baulig  <martin@ximian.com>
22024
22025         * mini-amd64.c: Don't access `type->data.klass' directly, call
22026         mono_class_from_mono_type() instead since the type may be a
22027         generic instance.
22028
22029 2004-09-09  Martin Baulig  <martin@ximian.com>
22030
22031         * mini-amd64.c (get_call_info): Fix support for generic instances.
22032         (add_valuetype): Use mono_class_from_mono_type() to get the class
22033         since we can be a generic instance.
22034
22035 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22036
22037         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22038
22039 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22040
22041         * liveness.c: reset spill costs on each scan: bug 62107
22042
22043 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22044
22045         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22046         unnecessary line that doesn't compile
22047
22048 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22051         trampolines, make them call an error function so people can fix their
22052         code.
22053
22054 2004-09-06  Martin Baulig  <martin@ximian.com>
22055
22056         * mini.c (mono_method_to_ir): When initializing locals, handle a
22057         generic instances like a valuetype if it's a valuetype and like a
22058         class if it's a class.
22059
22060 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22061
22062         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22063         stack. Fixes #64674.
22064
22065         * exceptions.cs: Add test for unwinding of call arguments.
22066
22067 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22068
22069         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22070         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22071         set the carry/borrow flag). The sparc and s390 implementations
22072         can now use optimized versions (and simplify the code). ppc bugfixes.
22073
22074 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22075
22076         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22077
22078 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22079
22080         * inssel-amd64.brg: Remove leftover 32 bit rule.
22081
22082         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22083
22084 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22085
22086         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22087         mono_arch_find_jit_info functions into a new function. Fix a memory
22088         leak.
22089
22090         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22091         refactored code.
22092         
22093 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22094
22095         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22096         as well.
22097         
22098         * exceptions.cs: Add array size tests.
22099
22100         * mini.c: Allocate a separate icall wrapper for each arity of 
22101         mono_array_new_va. Fixes #59509.
22102
22103         * exceptions.cs: Add testcase for 64578.
22104
22105         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22106
22107         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22108         
22109 2004-09-02  Martin Baulig  <martin@ximian.com>
22110
22111         * mini.c (mono_method_to_ir): When initializing the locals, call
22112         handle_initobj() on the generic instance itself, not its
22113         underlying type.
22114
22115 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22116
22117         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22118         MonoJitInfo for dynamic methods.
22119
22120         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22121
22122         * mini.c: Add support for freeing JIT data for dynamic methods.
22123         
22124 2004-09-01  Martin Baulig  <martin@ximian.com>
22125
22126         * mini-x86.c (is_regsize_var): Added support for generic
22127         instances.
22128         (mono_arch_emit_prolog): Make this compile again, use
22129         `x86_push_imm_template (code)'.
22130
22131 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22132
22133         * mini-x86.c: make all push_imm instructions that get
22134         patched always emit the long form
22135
22136 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22139         in a per-domain hash.
22140
22141         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22142         types.
22143
22144 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22145
22146         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22147         work.
22148         
22149         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22150         work.
22151
22152         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22153         Beginnings of SSE2 support.
22154
22155         * exceptions.cs: Add more tests for checked int<->uint casts.
22156
22157 2004-08-28  Martin Baulig  <martin@ximian.com>
22158
22159         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22160         generic instances.
22161
22162         * mini.c
22163         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22164         Handle generic instances recursively.
22165
22166 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22167
22168         * iltests.il: test for conv.u8 on a constant
22169
22170 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22171
22172         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22173         LCONV_x4 (shrun_32 (membase)).
22174
22175 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22176
22177         * inssel-x86.brg: c&p rules for push/setret of long
22178
22179 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22180
22181         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22182         compare (regvar, base)
22183
22184         * inssel-x86.brg: more burg love
22185
22186         * inssel.brg: more cleanup
22187
22188         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22189
22190 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22191
22192         * basic-long.cs, basic-calls.cs: new tests for optimization.
22193
22194 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22195
22196         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22197         patch.
22198
22199 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22200
22201         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22202         
22203 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22204
22205         * inssel.brg (mini_emit_memcpy): use 
22206         NO_UNALIGNED_ACCESS to disable memcpy optimization
22207
22208 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22209
22210         * mini-amd64.c: Handle generic types in various places.
22211
22212         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22213
22214 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22215
22216         * mini.c (handle_box): Fix warning.
22217
22218         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22219
22220         * mini-amd64.h: Enable the emit_state optimization.
22221
22222         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22223
22224         * mini-amd64.c: Add some new 64 bit peephole opts.
22225
22226         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22227
22228         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22229
22230         * mini-amd64.c: Register allocator fixes.
22231
22232         * mini.c: Add an optimization to emit_state to avoid allocation of new
22233         registers on some platforms.
22234
22235 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22236
22237         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22238
22239         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22240         allocation. Fixes #63085.
22241
22242         * basic-long.cs: Add new regression test.
22243
22244         * mini-amd64.c: Register allocator improvements.
22245
22246 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22247
22248         * mini-amd64.c (read_tls_offset_from_method): Add another code
22249         sequence.
22250
22251         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22252         instruction sequence for nullifying class init trampolines.
22253
22254         * objects.cs: Add new regalloc test.
22255
22256         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22257
22258 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22259
22260         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22261         
22262         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22263         arguments.
22264
22265         * driver.c: Fix profiling after TLS changes.
22266         
22267         * driver.c (mono_main): Set mono_stats.enabled if needed.
22268
22269         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22270         CEE_BOX.
22271
22272 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22273
22274         * mini-x86.c: use a 1 op rather than a 2 op tls access
22275         instruction -> faster.
22276
22277 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22278
22279         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22280         x86 backend.
22281
22282 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22283
22284         * exceptions-sparc.c (throw_exception): fix typo
22285
22286 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22287
22288         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22289         set tree->dreg correctly with tls. Allow any
22290         register to be used.
22291
22292         * mini-x86.c (read_tls_offset_from_method): add new code
22293         generation pattern seen with GCC.
22294
22295
22296 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22297
22298         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22299         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22300         exceptions-sparc.c: fix some performance issues in exception
22301         handling and setting of the stack trace for exceptions that were
22302         already thrown.
22303
22304 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22305
22306         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22307         x86 backend.
22308         
22309         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22310         registers.
22311
22312 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22313
22314         This patch inlines tls access, when possible.
22315         
22316         * mini.h: new arch functions for TLS intrinsics.
22317         All platforms updated with a stub.
22318
22319         * mini.c: use the new intrinsics
22320
22321         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22322         arch specific intrinsic for tls variables
22323
22324 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22325
22326         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22327         under windows.
22328
22329 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22330
22331         * mini.c: thread local allocation
22332
22333 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22334
22335         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22336
22337         * Makefile.am: Link against the static version of libmonogc.
22338         
22339         * Makefile.am: Link the static versions of the convenience libraries
22340         into the mono executable.
22341
22342         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22343
22344 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22345
22346         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22347         on integer overflow.
22348
22349         * mini-amd64.c: Reorganize function call code.
22350
22351         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22352
22353 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22354
22355         * inssel-x86.brg: use xor eax,eax.
22356         
22357         * basic.cs: new tests
22358
22359 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22360
22361         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22362         in exception throwing code.
22363         
22364 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22365
22366         * inssel-x86.brg: use xor esi,esi.
22367
22368 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22369
22370         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22371         can trace methods compiled during mini_init () too.
22372
22373         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22374         CEE_CONV_U4.
22375
22376 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22377
22378         * Makefile.am: static link on x86 (r=zoltan)
22379
22380 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22381
22382         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22383         code since it causes some programs to fail.
22384
22385 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22386
22387         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22388
22389 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22390
22391         * mini.c: ovfops_op_map - add STACK_OBJ case for
22392         CONV_I 
22393         * basic.cs: add test_0_pin_string as test
22394         case for above.
22395
22396 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22397
22398         * Makefile.am: build C# if srcdir != builddir
22399
22400 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22401
22402         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22403         fall-through blocks.
22404
22405 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22406
22407         * driver.c: enable loop by default again and include abcrem in -O=all.
22408
22409 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22410
22411         * iltests.il: Add some localloc tests.
22412
22413         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22414
22415         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22416         Fixes #62574.
22417
22418         * inssel-amd64.brg: Add some optimizations.
22419
22420         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22421         for gcc-3.4.
22422
22423         * Makefile.am: Statically link mono against libmono on AMD64.
22424         
22425         * mini-amd64.c inssel-amd64.brg: Optimizations.
22426
22427 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22428
22429         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22430
22431         * tramp-amd64.c: Patch calling code in trampolines.
22432
22433 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22434
22435         * mini-amd64.c: pinvoke struct passing fixes.
22436
22437 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22438
22439         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22440         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22441
22442 2004-08-05  Duncan Mak  <duncan@ximian.com>
22443
22444         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22445         CEE_LDELEM_ANY.
22446
22447 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22448
22449         * mini-amd64.c (emit_move_return_value): Move return value for normal
22450         calls too.
22451
22452 2004-08-05  Martin Baulig  <martin@ximian.com>
22453
22454         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22455         `type->type'; just modify `type' itself when dealing with enums
22456         and generic instances.
22457         (check_call_signature): Make `simple_type' a `MonoType *'.
22458
22459 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22460
22461         * mini.c: Use OP_PADD to add offsets to addresses.
22462
22463         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22464
22465 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22466
22467         * mini-sparc.c (mono_arch_emit_epilog): fix check
22468         for folding last op into restore instruction
22469
22470 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22471
22472         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22473         helper methods using the code manager.
22474         
22475         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22476
22477         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22478
22479 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22480         
22481         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22482           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22483
22484         * mini-s390.c: fix tail processing
22485
22486 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22487
22488         * mini-ppc.c: mul.ovf.un exception name fix.
22489
22490 2004-08-03  Martin Baulig  <martin@ximian.com>
22491
22492         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22493         instances; before jumping to `handle_enum', also modify `ptype'.
22494
22495 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22496
22497         * cpu-sparc.md: fcall maximal length too small.
22498
22499 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22500
22501         * mini-amd64.c mini.h: Add initial support for passing/returning 
22502         structures to/from pinvoked methods.
22503
22504 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22505
22506         * mini-ppc.c: reg allocator fix.
22507
22508 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22509
22510         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22511
22512         * inssel.brg: Optimize memset on 64 bit machines.
22513
22514         * mini-amd64.c: Fix some vararg cases.
22515
22516 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22517
22518         * mini-s390.c: Corrected macro in emit_float_to_int
22519
22520         * s390-abi.cs: Tests to exercise the s390 ABI
22521
22522 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22523
22524         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22525         caller saved regs.
22526
22527         * basic.cs: Add a test for add.ovf.un.
22528
22529 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22530
22531         * mini-sparc.c: add case for OP_IDIV_UN
22532
22533 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22534
22535         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22536         
22537         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22538
22539 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22540
22541         * basic.cs: regression tests.
22542
22543         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22544         regressions.
22545
22546 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22547
22548         * basic.cs: Add a new test.
22549
22550         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22551         and AOT. Various fixes and optimizations.
22552
22553         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22554
22555 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22556
22557         * mini-ppc.c: make sure temp regs are not used for global reg
22558         allocation.
22559
22560 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22561
22562         * cpu-sparc.md: conv_i8 fix for 64bits
22563
22564         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22565
22566 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22567         
22568         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22569         add opcode for cmp BYTE PTR [eax], imm.
22570
22571         * inssel.brg: Make memcpy and memset takes bases.
22572
22573 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22574
22575         * *-amd64.*: More AMD64 work.
22576         
22577 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22578
22579         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22580         add a compare-not-equal opcode.
22581         
22582 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22583
22584         * mini.c: Use mono_init_from_assembly instead of mono_init.
22585         
22586 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22587
22588         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22589
22590         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22591
22592         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22593
22594         * inssel.brg: 64 bit fixes.
22595
22596         * mini.h (MonoCallInst): Add some AMD64 specific data.
22597
22598         * mini.h: Add some OP_P opcodes.
22599
22600 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22601
22602         * basic.cs: tests for 61797 and 61740
22603
22604 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22605
22606         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22607         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22608
22609 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22610
22611         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22612
22613         * *-amd64*.*: Ongoing AMD64 work.
22614
22615 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22616
22617         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22618
22619         * *-amd64*: Ongoing AMD64 work.
22620
22621         * mini-arch.h: Add AMD64 support.
22622
22623         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22624
22625         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22626
22627         * mini-ops.h: Add new opcodes.
22628
22629         * Makefile.am: Add AMD64 support.
22630
22631         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22632         rules into the inssel-long*.brg files.
22633
22634         * *-amd64.*: Add beginnings of AMD64 backend.
22635
22636 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22637
22638         * mini.c (print_dfn): commenting out the code that prints
22639         the cil. With -O=deadce, this makes -v -v crash.
22640         
22641         * cpu-pentium.md: make checkthis have a length of 2
22642
22643 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22644
22645         * mini-sparc.h: fix implementations of __builtin
22646         functions for Sun compiler for V9.
22647
22648 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22649
22650         * mini.c: use the new stelem.ref wrapper
22651         * exceptions.cs, arrays.cs: new stelem.ref tests
22652
22653 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22654
22655         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22656         new XSP should work with these changes).
22657
22658 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22659         
22660         * inssel-{long32,x86,}.brg: trivial optimizations.
22661         
22662 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22663
22664         * mini.c: load value when emitting box operation in
22665         constrained calls.
22666
22667 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22668
22669         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22670         is one byte shorter than cmp DWORD PTR [eax], 0.
22671
22672 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22673
22674         * inssel-ppc.brg: arguments on the stack are always
22675         relative to the stack pointer (spotted by Neale Ferguson).
22676
22677 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22678
22679         * exceptions-x86.c: delay appending the method name to the trace until
22680         after mono_jit_info_table_find is called, as this gets the real
22681         MonoMethod.
22682
22683 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22684
22685         * aot.c: register roots
22686
22687 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22688
22689         * aot.c : I could just use PLATFORM_WIN32 flag.
22690
22691 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22692
22693         * aot.c : Reverting the previous fix. This time it broke linux build.
22694
22695 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22696
22697         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22698
22699 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22700
22701         * mini.c (handle_stack_args): Remove some more debugging code.
22702         
22703         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22704
22705         * driver.c mini.h aot.c: Allow additional options to be specified with
22706         --aot and pass them to mono_compile_assembly.
22707
22708         * aot.c: Add experimental code to AOT compile all loaded assemblies
22709         on demand and save the code into a cache in the filesystem.
22710
22711         * aot.c: Add support for more wrapper methods.
22712         
22713         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22714         58863.
22715
22716         * cpu-*.md: Remove removed opcodes.
22717
22718         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22719         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22720         related icalls to marshal.c.
22721
22722 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22723
22724         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22725
22726         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22727
22728         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22729
22730 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22731         * liveness.c: If liveness is recomputated we need to reset the information
22732         for each variable. This way, if the liveness range has been narrowed
22733         by optimizations that happened after the last computation, we can return
22734         a smaller range.
22735         
22736         For example, if you have
22737         
22738         {
22739                 int i = 0;
22740                 
22741                 // Tons of code that does not affect i
22742                 
22743                 i = foo ();
22744                 ...
22745         }
22746         
22747         i = 0 is dead code and will be removed by SSA. However, when
22748         linear scan gets to the code, i will still appear to be live
22749         throughout the entire block. This prevents good register allocation.
22750
22751 2004-07-06  Martin Baulig  <martin@ximian.com>
22752
22753         * debug-mini.c (mono_debug_init_method): Allow
22754         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22755         (mono_debug_add_icall_wrapper): New method.
22756
22757         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22758
22759 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22760
22761         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22762         optimization.
22763
22764 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22765
22766         * aot.c (mono_aot_load_method): Fix loading of debug info.
22767
22768 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22769
22770         * aot.c: Add logging support.
22771
22772 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22773
22774         * mini.h: Add prototype for mono_print_method_from_ip.
22775
22776         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22777
22778         * inssel.brg: 64 bit fixes.
22779
22780         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22781         inssel-long32.brg.
22782
22783         * Makefile.am: Add SPARC64 support.
22784
22785 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * aot.c: Fix alignment problems on 32 bit platforms.
22788
22789 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22792         SPARC64.
22793
22794         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22795         problems.
22796
22797         * mini.h: Bump AOT file version. Some 64 bit fixes.
22798
22799 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22800
22801         * inssel-sparc.brg: Add new rule to avoid register moves.
22802
22803         * inssel.brg: Add ldind_to_load_membase helper function.
22804
22805 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22806
22807         * mini.c: OffsetToStringData intrinsic.
22808         
22809 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22810
22811         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22812
22813         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22814         regression tests.
22815
22816         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22817 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22818
22819         * mini.c: reinstated mono_compile_get_interface_var()
22820         on x86, too, since the change breaks the Gtk# build there as well.
22821
22822 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22823
22824         * driver.c: remove loop from the default optimizations: it seems to
22825         interact badly with some of the other options (see bug #60613).
22826
22827 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22828
22829         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22830         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22831
22832 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22833
22834         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22835         vararg-using methods.
22836
22837 2004-06-21  Martin Baulig  <martin@ximian.com>
22838
22839         * mini/mini-exceptions.c
22840         (mono_handle_exception): Added `gpointer original_ip' argument.
22841         After calling mono_unhandled_exception(), call
22842         mono_debugger_unhandled_exception() and if that returns true,
22843         restore the context and return.
22844
22845 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22846
22847         * mini-ppc.c: prefer the use of relative branches so
22848         they won't need to be patched in aot code (patch from Patrick Beard).
22849
22850 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22851
22852         * aot.c: patch from Patrick Beard to make the output assembly
22853         more correct for the MacOSX assembler. Small tweak to
22854         generate sane images on Linux/PPC, too.
22855
22856 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22857
22858         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22859         case until bug #59509 is fixed (shows up in #60332).
22860
22861 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22862
22863         * mini.c: make sure the needed wrappers are compiled, too, with
22864         precomp.
22865
22866 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22867
22868         * driver.c: remove NPTL reference in --version output.
22869
22870 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22871
22872         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22873         generate valid assembly for the Mach-O assembler.
22874
22875 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22876
22877         * driver.c: don't include abcrem in the all optimization specifier
22878         since it slows down jit compilation too much for now.
22879
22880 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22881
22882         * mini.c: use BIGMUL only if both operands have the same signage.
22883         * iltests.il: Test for bug 60056. (errors related to signage in
22884         BIGMUL).
22885
22886         r=lupus.
22887
22888 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22889
22890         * mini.c, aot.c: memory leak fixes.
22891
22892 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22893
22894         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22895
22896 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22897
22898         * Makefile.am: remove the -static hack completely, it links in
22899         statically glib as well.
22900
22901 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22902
22903         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22904         * exceptions.cs: make it compile with new mcs/csc.
22905
22906 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22907         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22908         and added relevant test case.
22909
22910 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22911
22912         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22913         regressions in gtk-sharp.
22914
22915 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22916
22917         * exceptions.cs: New regression tests.
22918
22919         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22920
22921 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22922
22923         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22924
22925 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22926
22927         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22928
22929         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22930
22931 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22932
22933         * mini.c (mono_jit_runtime_invoke): Init class in this
22934         method instead of trusting mono_jit_compile_method to
22935         do the work (because wrappers can be in object class)
22936
22937 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22938
22939         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22940
22941         * basic-long.cs: New regression test.
22942
22943 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22944
22945         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22946         and div/rem checks.
22947
22948 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22949
22950         * Makefile.am: fix miguel's change to build mono statically against
22951         libmono (track build dependencies).
22952
22953 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22954
22955         * cfold.c: Some glib versions do not have G_MININT32.
22956
22957 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22958
22959         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22960         with precision of tan, atan, sin and cos, and implemented related
22961         regressions tests (fixes bug 54467, but one new problem appeared and
22962         is not fixed yet).
22963
22964 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22965
22966         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22967
22968         * exceptions.cs: Add test for constant folding && division by zero.
22969
22970         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22971         since driver.c is in libmono too, so the optimization was useless.
22972
22973         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22974         variable to driver.c so the compiler can emit more efficient code to
22975         access them.
22976
22977 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22978
22979         * Makefile.am: don't distribute generated inssel.[ch] files.
22980
22981 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22982
22983         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22984         into the default appdomain. Fixes #58707.
22985
22986         * jit-icalls.c: Remove the broken approximation for truncl, doing
22987         no conversion is better.
22988
22989         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22990         Fixes #58863.
22991
22992 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22993
22994         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22995         of the mcrxr instruction which is not available on some processors
22996         even if it's documented to be. Implement add and sub overflow correctly
22997         (still not complete for long unsigned). Speed up icalls a bit.
22998
22999 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23000
23001         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23002         we run .cctor in the current domain instead of target_domain.
23003         
23004         Fixes bug #58558, .cctor not being called in -O=shared.
23005
23006 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23007
23008         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23009
23010 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23011
23012         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23013         which can be done with an imm8, do it that way.
23014         (mono_arch_output_basic_block): ditto for a jmp
23015         (mono_arch_emit_prolog): Computate maximum offset of a label.
23016
23017 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23018
23019         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23020         now tries to allocate prefered physical reg's for virtual
23021         regs. This reduces the number of emited spills/loads with
23022         20-30% on our core assemblies.
23023
23024 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23025
23026         * jit-icalls.c: truncl() is not needed and trunc() is
23027         the correct thing to do anyway (bug #58287).
23028
23029 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23030
23031         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23032         if available.
23033
23034 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23035
23036         * driver.c: enable loop optimizations by default.
23037
23038 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23039
23040         * mini-x86.c: fix calc of max loop size when aligning loops start.
23041
23042 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23043
23044         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23045         the stack.
23046
23047 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23048
23049         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23050         should set carry.
23051
23052         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23053
23054         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23055         
23056         * mini.c (inline_method): Allways inline some wrappers even if the cost
23057         is too large. Fixes #58785.
23058
23059         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23060         
23061 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23062
23063         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23064         (crichton@gimp.org). Beginning of support for sparc/linux.
23065
23066         * mini-sparc.c: Optimize retrieval of LMF address.
23067
23068 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23069
23070         * exceptions-ppc.c:  handle alloca in methods with clauses.
23071
23072 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23073
23074         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23075
23076 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23077
23078         * mini.c: Delegate most of the abort signal work to 
23079           mono_thread_request_interruption, which also handles Stop and Suspend
23080           states.
23081
23082 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23083
23084         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23085         supports the save/restore lmf opcodes.
23086
23087 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23088
23089         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23090         by gcc-3.4 as well.
23091
23092         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23093
23094 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23095
23096         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23097         methods which contain array accesses.
23098
23099         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23100         boundaries. Fixes #58537.
23101
23102         * iltests.il: Add regression test for #58537.
23103
23104 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23105
23106         * mini-x86.c (mono_arch_local_regalloc): Last part of
23107         fix for bug #58633 (releasing register to early).
23108
23109 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23110
23111         * basic-long.cs: Add new regression test.
23112
23113 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23114
23115         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23116         register too early on the chain.
23117
23118 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23119
23120         * mini.c (create_helper_signature): Use a helper function to reduce
23121         the code which needs to be written. Also set the calling convention of
23122         icalls on windows. Fixes #57840.
23123
23124 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23125
23126         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23127         exceptions-ppc.c: added helper function to get the instruction address
23128         from a signal handler context.
23129
23130 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23131
23132         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23133         from gonzalo.
23134
23135 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23136
23137         * helpers.c: Add new env variable to pass args to objdump.
23138         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23139
23140 2004-05-17  Radek Doulik  <rodo@ximian.com>
23141
23142         * Makefile.am (common_sources): added abcremoval.h so it get
23143         disted and daily mono packages on go-mono.com will build again
23144
23145 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23146
23147         * abcremoval.c: Fixed coding style, added copyright header.
23148
23149         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23150
23151         * mini.h: Added prototype for abc removal main function.
23152
23153         * build_relations_propagation_table.pl: Added copyright header.
23154
23155 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23156
23157         * basic-long.cs: reg test for complex ceq_long bug.
23158
23159 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23160
23161         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23162         reg in long and clob case (bug #58343). Fixed/added comments.
23163
23164 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23165
23166         * mini.c (mono_jit_runtime_invoke): Follow new convention
23167         of calling the invoke method with an function pointer.
23168
23169 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23170
23171         * ChangeLog: Fix author of memory leak patch.
23172
23173 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23174
23175         * Makefile.am: fix make dist as well...
23176
23177
23178 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23179
23180         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23181         on archs where pointers are 4 bytes long.
23182
23183         * Makefile.am: Added abcremoval.c source file.
23184
23185         * abcremoval.c: Added abcremoval.c.
23186
23187         * abcremoval.h: Added abcremoval.h.
23188
23189         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23190
23191         * inssel.brg: Enabled bounds check removal.
23192
23193         * mini.c: Added support for abcrem optimization.
23194
23195         * mini.h: Added abcrem optimization label.
23196
23197         * driver.c: Added support for abcrem optimization.
23198
23199         * propagated_relations_table.def: Added propagated_relations_table.def.
23200
23201 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23202
23203         * mini.c, cfold.c: fix style.
23204
23205 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23206
23207         * mini.c: handle issue with the low-level implementation of
23208         some long opcodes (bug #54209).
23209
23210 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23211
23212         * basic.cs: test for my new cmov stuff.
23213
23214 2004-05-13      Patrik Torstensson
23215
23216         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23217         opt and added peephole documentation.
23218
23219 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23220
23221         * tramp-ppc.c: rewrote the generic trampoline code.
23222
23223 2004-05-11      Patrik Torstensson
23224
23225         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23226
23227 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23228
23229         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23230
23231         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23232         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23233
23234         * mini.c: Add new icalls for AsAny marshalling.
23235
23236 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23237
23238         * tramp-ppc.c, mini-ppc.c: more cleanups.
23239
23240 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23241
23242         * mini.c: no warnings.
23243
23244 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23245
23246         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23247
23248 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23249
23250         * mini.c: In the thread abort signal handler, if the thread is in the
23251         process of being stoped, don't throw the Abort exception, just stop the
23252         thread.
23253
23254 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23255
23256         * tramp-ppc.c: removed old code.
23257
23258 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23259
23260         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23261         do some simple speed optimizations on ppc.
23262
23263 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23264
23265         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23266         and large offsets in load/store.
23267
23268 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23269
23270         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23271         it causes regressions.
23272
23273 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23274
23275         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23276         support.
23277
23278 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23279
23280         * jit-icalls.c: remove warnings.
23281         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23282         speedups for unsafe code.
23283
23284 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23285
23286         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23287
23288 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23289
23290         * basic-calls.cs: Add new regression test.
23291
23292         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23293         more portable.
23294
23295         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23296
23297         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23298         is no longer used.
23299
23300 2004-05-06      Patrik Torstensson
23301
23302         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23303         long reg allocation in any reg (not only eax:edx) and implemented 
23304         long shl/shr ops in asm instead of helpers.
23305
23306 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23307
23308         * mini-sparc.h: Fix warnings.
23309
23310         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23311         stack.
23312
23313         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23314         separate statement for clarity.
23315
23316         * mini-sparc.c: Update status.
23317
23318 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23319
23320         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23321         here.
23322
23323 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23324
23325         * inssel-ppc.brg: another small pre-release workaround:
23326         we don't do overflow detection for long_sub_un.
23327
23328 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23329
23330         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23331         (also works around a weird ppc bug: 57957).
23332
23333 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23334
23335         * tramp-ppc.c: trampoline fixes.
23336
23337 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23338
23339         * mini-ppc.c: fixed typos.
23340
23341 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23342
23343         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23344         at the top of the stack. Fixed typos. Use a frame registers
23345         for all the methods with exception clauses.
23346
23347 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23348
23349         * exceptions-ppc.c: restore fp registers.
23350
23351 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23352
23353         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23354         order from the stack top (moved the stack room to save the
23355         return value for trace after the param area). Fixed corruption
23356         in restoring registers on unwind.
23357
23358 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23359
23360         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23361
23362 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23363
23364         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23365         and prolog/epilog for methods that use it. Allow
23366         enough param area room for varargs methods. Fix miguel's
23367         breakage in exception handling.
23368
23369 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23370
23371         * Makefile.am: run genmdesc only on current arch.
23372
23373 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23374
23375         * exceptions-x86.c:
23376         * mini-x86.h: fix the build on windows.
23377
23378 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23379
23380         * 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.
23381
23382         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23383
23384         * mini-exceptions.c: New file.
23385         
23386         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23387         Move some parts of the x86 exception handling code to an 
23388         arch-independent file so it can be shared with other ports.
23389
23390 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23391
23392         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23393
23394 2004-04-26  David Waite  <mass@akuma.org>
23395
23396         * driver.c: remove comma from end of enumeration declaration
23397
23398 2004-04-26  Jackson Harper  <jackson@ximian.com>
23399
23400         * driver.c: parse config file before loading first assembly. This
23401         allows the user gac to be enabled/disabled. 
23402         
23403 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23404
23405         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23406         simpler mechanism: we do not care what is encoded initially
23407         (branch absolute or relative), we care about the code and its
23408         target.  I kept the old code for reference for now.
23409
23410         The new code tries first to determine if the jump is anywhere in
23411         the -/+32 absolute meg range, if it succeeds, it encodes using the
23412         absolute branch;  If not, it tried to find something in the
23413         relative range, if not, it uses the handle_thunk code. 
23414
23415 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23416
23417         * exceptions-ppc.c: use the correct ip register on macosx.
23418
23419 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23420
23421         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23422
23423 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23424
23425         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23426         Raise exception on integer divide by zero by hand since the hw
23427         doesn't support it. Handle NaNs in FP compares.
23428
23429 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23430
23431         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23432         code reducing duplication between the platforms and enabled
23433         signal exception handling (on linux for now).
23434
23435 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23436
23437         * exceptions-ppc.c: more macosx support.
23438
23439 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23440
23441         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23442
23443 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23444
23445         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23446
23447 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23448
23449         * iltests.il: more tests.
23450
23451 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23452
23453         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23454         vars as well.
23455
23456 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23457
23458         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23459
23460 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23461
23462         * liveness.c: Mark variables as volatile in all basic blocks reachable
23463         from exception clauses.
23464
23465 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23466
23467         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23468         inlining.
23469
23470 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23471
23472         * iltests.il, basic.cs: more tests for regalloc.
23473
23474 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23475
23476         * iltests.il: Some tests for register allocation modifications
23477         I have locally.
23478
23479 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23480
23481         * exceptions.cs: Add regression test for bug #56782.
23482
23483         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23484         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23485         the beauty of fixing the same thing in 5 different files...
23486
23487 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23488
23489         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23490         methods.
23491
23492 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23493
23494         * mini.c: Add support for STRWLPARRAY marshalling convention.
23495
23496 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23497
23498         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23499         to init the context to setup the regs pointer).
23500
23501 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23502
23503         * exceptions-ppc.c: more exceptions work.
23504
23505 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23506
23507         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23508         not allowed.
23509
23510 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23511
23512         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23513         can use the memory directly.
23514
23515         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23516
23517         add x86_add_membase, x86_sub_membase, x86_mul_membase
23518
23519 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23520
23521         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23522         GENERAL_REGS they were also hardcoded for all PPC ports.
23523
23524         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23525
23526         Remove hard-coded limit for floating point registers, use
23527         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23528
23529         Notice that in MacOS X calling conventions you can fit a lot more
23530         floating point values in registers, so I should update the PInvoke
23531         test to excercise the passing of floating point values on the
23532         stack (currently broken).
23533         
23534 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23535
23536         * tramp-ppc.c (create_trampoline_code): Added
23537         JUMP_TRAMPOLINE_SIZE. 
23538         (ppc_magic_trampoline): Follow the pattern from
23539         x86_magic_trampoline: if code is set to zero, return. 
23540         (create_trampoline_code): Always pass MonoMethod to the jump
23541         trampoline, before it was passing a null.
23542         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23543         share the code with mono_arch_create_jit_trampoline. 
23544
23545         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23546         implemented.
23547         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23548         implemented.  
23549
23550         * cpu-g4.md: Added length for jmp instruction, the worst case
23551         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23552         for save_lmf).
23553
23554 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23555
23556         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23557
23558 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23559
23560         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23561         before each IL instruction.
23562
23563         * mini.c (CEE_BOX): Fix warnings.
23564
23565 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23566
23567         * mini.c: removed a few unused vars and extra whitespace.
23568
23569 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23570
23571         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23572         checks.
23573         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23574         index.
23575         (OP_GETCHR): use the above
23576         (CEE_LDELEMA): use the above.
23577
23578         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23579         version of the generic impl.
23580         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23581         (CEE_LDELEMA): use the above.
23582
23583 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23584
23585         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23586         Fixes #56317.
23587
23588         * iltests.il: Added new regression test for #56317.
23589
23590 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23591
23592         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23593         under NetBSD. Fixes #56450.
23594
23595         * liveness.c (update_gen_kill_set): Fix previous patch.
23596
23597 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23598
23599         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23600
23601 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23602
23603         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23604         ldsfld and ldsflda.
23605
23606         * inssel-sparc.brg: Add more optimizations.
23607
23608         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23609
23610 2004-04-01  Martin Baulig  <martin@ximian.com>
23611
23612         * mini.c (handle_box): New static function; moved the
23613         implementation of CEE_BOX here.
23614         (mono_method_to_ir): Added `constrained_call' variable.
23615         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23616         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23617         mono_method_get_constrained() to get the method.
23618
23619 2004-04-01  Martin Baulig  <martin@ximian.com>
23620
23621         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23622         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23623         (mono_method_to_ir): We don't need these macros anymore since
23624         mono_class_get_full() already takes care of it. 
23625
23626 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23627
23628         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23629         use @function (as doesn't accept #function here) and check the return
23630         value of system and stop if fails.
23631
23632 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23633
23634         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23635
23636 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23637
23638         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23639
23640         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23641
23642         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23643         #56223.
23644
23645         * basic-long.cs: Add test for negation of Int64.MinValue.
23646
23647 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23648
23649         * mini-sparc.c: Update status.
23650
23651         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23652
23653         * exceptions-sparc.c: Fix return value in filters.
23654
23655         * inssel-sparc.brg: Fix register allocation in some rules.
23656
23657 2004-03-28  Martin Baulig  <martin@ximian.com>
23658
23659         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23660         if neccessary.  
23661
23662 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23663
23664         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23665         
23666         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23667         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23668         remove unused conv_u4 opcode.
23669
23670         * mini-x86.c: Remove valgrind workaround since it slows down things
23671         even when mono is not run under valgrind.
23672
23673 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23674
23675         * mini-sparc.c: Update status.
23676
23677         * inssel-sparc.brg: Add some optimizations.
23678
23679         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23680         future delay slot filling. Add support for varargs, tail calls and JMP.
23681
23682         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23683         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23684
23685         * inssel.brg: Fix register allocation in OP_ARGLIST.
23686
23687         * inssel.brg: Fix warnings.
23688
23689 2004-03-25  Martin Baulig  <martin@ximian.com>
23690
23691         * mini.c (inflate_generic_field): Removed.
23692         (mini_get_method): Removed, use mono_get_method_full(),
23693         (mini_get_class): Removed, use mono_class_get_full().
23694         (mono_method_to_ir): Pass our generic context to
23695         mono_field_from_token().        
23696
23697 2004-03-25  Martin Baulig  <martin@ximian.com>
23698
23699         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23700         of a `MonoMethod *'.
23701         (mini_get_method): Take a `MonoGenericContext *' instead
23702         of a `MonoMethod *'.
23703         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23704         a new local variable called `generic_context' which holds the
23705         current `MonoGenericContext *'; use it to lookup things.
23706
23707 2004-03-24  Martin Baulig  <martin@ximian.com>
23708
23709         * mini.c (mini_get_class): New static method; if we're inside a
23710         generic instance, inflate the class if neccessary.
23711         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23712
23713 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23714
23715         * iltests.il: New regression test for #55976.
23716
23717         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23718         #55976.
23719
23720 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23721
23722         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23723         output.
23724
23725 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23726
23727         * liveness.c: Consider SSA stores as well as loads when making vars
23728         volatile.
23729
23730         * exceptions.cs: New regression tests for register allocation.
23731         
23732 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23733
23734         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23735         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23736           domain lock only to protect puntual access to data structures.
23737           Added access lock for sighash, jit_icall_hash_name, 
23738           jit_icall_hash_addr and domain->code_mp.
23739
23740 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23741
23742         * driver.c: Print SIGSEGV handling method.
23743
23744         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23745
23746         * mini.c (setup_jit_tls_data): Handle case when this is called
23747         multiple times for a thread.
23748
23749         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23750         is different from fbxx_un. Fixes #54303. Also use constants instead of
23751         magic numbers in a lot of places.
23752
23753 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23754
23755         * exceptions.cs: Fix cctor test when --regression is used.
23756
23757 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23758
23759         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23760         for Linux/ppc.
23761
23762 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23763
23764         * inssel-ppc.brg: fixed register assignments for some rules.
23765
23766 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23767
23768         * exceptions.cs: Add test for exceptions in static constructors.
23769
23770         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23771         static constructors outside the domain lock. Fixes #55720.
23772
23773 2004-03-17  Martin Baulig  <martin@ximian.com>
23774
23775         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23776         (inflate_generic_field): Take the `MonoMethod *' instead of the
23777         `MonoClass *' and added support for generic method.
23778         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23779         have a `field->parent->gen_params', only inflate the field if it's
23780         an open constructed type.
23781
23782 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23783
23784         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23785         exception object instead of the preconstructed ones.
23786
23787 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23788
23789         * mini.c: reverted changed to sigsegv_signal_handler commited
23790         accidentally in the previous patch.
23791
23792 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23793
23794         * mini.c:
23795         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23796         running --aot with an old assembly.
23797
23798 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23799
23800         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23801         point values.
23802
23803         * mini-sparc.c: Add support for v9 branches with prediction.
23804
23805 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23806
23807         * mini.c (mini_init): #warning is GNUC only
23808
23809         * mini-sparc.h: implement __builtin_frame_address
23810         and __builtin_return_address for Sun C compiler
23811
23812 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23813
23814         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23815
23816 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23817
23818         * basic-calls.cs: Add test for unaligned byref long argument passing.
23819
23820         * mini-ops.h: Add sparcv9 compare and branch instructions.
23821
23822         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23823         v9 instructions if we have a v9 cpu.
23824
23825         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23826         registers for global allocation.
23827
23828         * exceptions-sparc.c: Fixes.
23829         
23830 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23831
23832         * liveness.c (mono_analyze_liveness): Optimized version.
23833
23834         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23835
23836         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23837         sparc work.
23838
23839         * basic-float.cs basic-calls.cs: New regression tests.
23840
23841 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23842
23843         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23844         sigaltstack implementation.
23845
23846         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23847         
23848         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23849         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23850
23851 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23852
23853         * mini.c: Fix warnings.
23854         
23855         * mini.c (mono_resolve_patch_target): New function which contains the
23856         arch independent part of the patching process.
23857
23858         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23859         patching code to a separate function.
23860
23861 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23862
23863         * mini.c (add_signal_handler): ifdef out on Windows
23864
23865 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23866
23867         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23868         cpu-sparc.md: Add exception handling support + other fixes.
23869
23870         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23871         typed GC detection in --version.
23872
23873         * basic.cs exceptions.cs: New regression tests.
23874
23875         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23876         the arch specific code can store data during a compilation.
23877
23878         * mini-ops.h: Add OP_SETFRET.
23879
23880         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23881         function, register a separate icall for each arity, so the icalls can
23882         get a wrapper.
23883         
23884         * mini.c (mono_print_tree): Print negative offsets in a more readable
23885         form.
23886         
23887         * mini.c: Make signal handling work on sparc.
23888         
23889         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23890
23891         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23892
23893         * jit-icalls.c: Emulate truncl by aintl on solaris.
23894
23895         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23896
23897 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23898
23899         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23900
23901 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23902
23903         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23904         a MarshalByRef type, inline a method that performs the check, taking into
23905         account that the object can be a proxy. Also implemented tow new opcodes:
23906         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23907         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23908         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23909
23910 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23911
23912         * mini-ppc.c: if a relative branch displacement is too big
23913         but it points to and area reachable with an absolute branch, 
23914         avoid the thunks.
23915
23916 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23917
23918         * mini.c: optimize small copies in cpblk.
23919
23920 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23921
23922         * basic-calls.cs basic-float.cs: New regression tests.
23923
23924         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23925         negative offsets from %fp. Implement localloc. Fix local register 
23926         allocation. Fix the case when the this argument needs to be saved to
23927         the stack. Implement some missing opcodes.
23928
23929 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23930
23931         * mini.c (mini_method_compile): Reenable global regalloc in methods
23932         with exception handlers.
23933
23934         * linear-scan.c (mono_varlist_sort): Fix warning.
23935
23936         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23937
23938         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23939         regalloc costs.
23940
23941         * liveness.c: Make all variables uses in exception clauses volatile, to
23942         prevent them from being allocated to registers. Fixes #42136.
23943
23944 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23945
23946         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23947         causes regressions.
23948
23949         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23950         argument to mono_arch_regalloc_cost.
23951
23952         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23953         precisely.
23954
23955 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23956
23957         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23958         Make the cost of allocating a variable to a register arch dependent.
23959
23960         * basic-calls.cs: Fix compilation of tests.
23961         
23962         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23963         helper function to cut back on the number of #ifdefs needed.
23964
23965         * mini-ppc.c: Fix compilation.
23966
23967         * basic-calls.cs: New regression tests.
23968
23969         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23970
23971         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23972         of l0 since that is callee saved.
23973
23974         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23975         to virtual calls.
23976
23977         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23978         of delay instruction.
23979
23980         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23981
23982         * mini.h (MonoCallInst): Add 'virtual' flag.
23983
23984         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23985
23986 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23987
23988         * *.cs: New regression tests.
23989
23990         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23991         work.
23992
23993         * mini.c (mono_runtime_install_handlers): Fix build.
23994
23995         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23996         'signal_stack_size' members.
23997
23998         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23999         alternate signal stack.
24000
24001         * exceptions-x86.c: Add stack overflow handling.
24002
24003         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24004         functions to arch independent code.
24005
24006         * mini.c (mono_print_tree): Print more detailed info for load_membase
24007         opcodes.
24008         
24009 2004-02-23  Martin Baulig  <martin@ximian.com>
24010
24011         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24012
24013 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24014
24015         * mini-x86.c: fixed reg allocation for div/rem.
24016
24017 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24018
24019         * driver.c (mono_main): Report some configuratio options on --version.
24020
24021 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24022
24023         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24024         low in the address space. Correctly flush memory in thunks where we
24025         output native code.
24026
24027 2004-02-20  Martin Baulig  <martin@ximian.com>
24028
24029         * mini.c (mini_get_method): New static method; inflate all generic
24030         methods and methods in open generic instances.
24031         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24032         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24033
24034 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24035
24036         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24037
24038         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24039
24040 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24041
24042         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24043
24044         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24045         it compile using Sun's compiler.
24046
24047 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24048
24049         * 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.
24050
24051         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24052
24053 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24054
24055         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24056         code.
24057         * mini-ppc.c: handle calls outside of the allowed range with thunks
24058         allocated using the code manager.
24059         * tramp-ppc.c: use the code manager to hold generated native code.
24060         Fixed the magic trampoline to just patch vtable entries.
24061
24062 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24063
24064         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24065         independent file.
24066
24067 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24068
24069         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24070         PPC.
24071
24072         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24073         if we have a working __thread implementation.
24074
24075         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24076         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24077
24078 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24079
24080         * mini-x86.c: Fix compilation under gcc 2.
24081         
24082 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24083
24084         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24085         contains a call to the wrapped function.
24086
24087         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24088         OP_<CALL>_IMM opcodes, and use them under X86.
24089         
24090         * mini.c (mono_jit_find_compiled_method): Fix warning.
24091
24092         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24093
24094         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24095
24096         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24097         functionality to mini.c.
24098
24099         * mini.c (mono_create_jump_trampoline): New function to create a jump
24100         trampoline. Return a compiled method instead of a trampoline if it
24101         exists. Add a cache for jump trampolines.
24102
24103         * mini.c (mono_jit_find_compiled_method): New function to return a
24104         compiled method if it exists.
24105
24106         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24107         mono_arch_create_jit_trampoline.
24108
24109         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24110         a jump trampoline. Fixes #52092.
24111         
24112 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24113
24114         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24115         which is not up-to-date. Add check_corlib_version () instead.
24116
24117         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24118         have to call it.
24119         
24120         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24121         since newer valgrind versions do not need it.
24122
24123         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24124         compile a method with a given set of optimizations.
24125
24126         * mini.c: Compile icall wrappers on-demand instead of at startup.
24127
24128         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24129         wrapper for an icall.
24130
24131 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24132
24133         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24134         #54063.
24135
24136         * iltests.il: Add test for non-empty stack before switch instruction.
24137
24138 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24139
24140         * mini.c: Add support for new stringbuilder marshalling conventions.
24141
24142         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24143
24144 2004-02-01  Martin Baulig  <martin@ximian.com>
24145
24146         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24147         in `ginst->mtype_argv'.
24148
24149 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24150
24151         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24152         facilitate grepping.
24153
24154 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24155
24156         * mini.c: fixed buglet in initobj generic implementation for references.
24157
24158 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24159
24160         * Makefile.am: make the version script conditional.
24161         * jit-icalls.c: handle missing truncl().
24162
24163 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24164
24165         * exceptions.cs: Add more tests for double->int conversion.
24166
24167         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24168         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24169
24170 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24171
24172         * driver.c: make --verbose --version emit an error
24173         if the loaded corlib doesn't match the runtime version.
24174
24175 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24176
24177         * mini-ppc.h: export ppc_patch().
24178         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24179         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24180         on par or better than on MacOSX.
24181
24182 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24183
24184         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24185         mono_lookup_pinvoke_call.
24186
24187         * mini-x86.c: Under windows, the default pinvoke calling convention is
24188         stdcall. Fixes #52834.
24189
24190         * mini.c (optimize_branches): Add an upper bound to the number of
24191         iterations to prevent infinite loops on strange loops. Fixes #53003.
24192
24193 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24194
24195         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24196         and ISINST. Fixes #52093.
24197
24198         * objects.cs (test_0_vector_array_cast): New tests.
24199         
24200 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24201
24202         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24203         checking in Array.Set ().
24204
24205         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24206         #52590.
24207
24208         * object.cs (test_0_multi_array_cast): New regression test.
24209
24210 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24211
24212         * exceptions-ppc.c: fix build on Linux/PPC.
24213
24214 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24215
24216         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24217         running under valgrind.
24218         (x86_magic_trampoline): Fix build bustage.
24219
24220         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24221         negative values as well. This is needed for the encoding of the line number
24222         info, since sometimes the line numbers are not in increasing order.
24223
24224 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24225
24226         * cpu-pentium.md (localloc): Increase the size of the localloc 
24227         instruction since it is a loop under Win32.
24228
24229         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24230         allocation.
24231
24232 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24233
24234         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24235         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24236         Max Horn (max@quendi.de). Fix file names in comments.
24237
24238 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24239
24240         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24241         avoid stack overflow.
24242         (replace_usage): Avoid uninitialized variable warnings.
24243
24244         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24245         and taking the address of valuetype variables.
24246
24247 2004-01-03  Patrik Torstensson
24248
24249         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24250         for other purposes than FP later on.
24251
24252 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24253
24254         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24255         of tail calls.
24256
24257 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24258
24259         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24260
24261 2003-12-30  Patrik Torstensson <p@rxc.se>
24262
24263         * mini-x86.h: Decreased number of availiable fp regs.
24264         Solves corner cases with FP spilling.
24265
24266 2003-12-23  Patrik Torstensson <p@rxc.se>
24267
24268         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24269         for floating point stack tracking / spilling on x86. 
24270         Fixes bug #49012.
24271         
24272         * basic-float.cs: added float mul overflow test.
24273
24274 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24275
24276         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24277
24278 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24279
24280         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24281         supports for cond branches that overflow the immediate
24282         overflow offset. mcs can compile simple programs.
24283
24284 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24285
24286         * exceptions-ppc.c: exception handling support wip:
24287         finally handlers get run on exception.
24288
24289 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24290
24291         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24292         profiling.
24293
24294 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24295
24296         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24297         initial support for stack walking and unwinding.
24298
24299 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24300
24301         * driver.c (mono_main): Make corlib-out-of-sync message more 
24302         descriptive. Also remove verify_corlib call.
24303
24304 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24305
24306         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24307         not overlap with other call's arguments, too.
24308
24309 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24310
24311         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24312         move to arch-specific code the choice of arch-specific
24313         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24314         * mini.c: ensure emulation calls will not interleave
24315         with other calls.
24316
24317 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24318
24319         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24320         the magic trampoline stack frame is dropped before executing
24321         the new method.
24322
24323 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24324
24325         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24326         and integer to fp conversions. Added support for overflowing
24327         arguments on the stack. Reserve a couple more registers as temps.
24328         Added support for aot compilation (as output still needs to be
24329         tweaked, though).
24330
24331 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24332
24333         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24334         Don't overwrite return register in some corner cases.
24335
24336 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24337
24338         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24339         static constructors when AOT compiling.
24340
24341         * driver.c (mono_main): Call mono_check_corlib_version.
24342
24343 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24344
24345         * cpu-g4.md, basic.cs: fixed div target register.
24346
24347 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24348
24349         * mini-ppc.c, basic.cs: shl_imm fix with test.
24350
24351 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24352
24353         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24354         structures by value. Misc fixes.
24355         * objects.cs: more tests.
24356
24357 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24358
24359         * mini-ppc.c: lconv.ovf.i implemented.
24360
24361 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24362
24363         * mini.c:
24364         (mini_init): don't error out if someone already called g_thread_init.
24365
24366 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24367
24368         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24369         to be any type per the spec. Fix abnormal memory usage when
24370         the same object is repeatedly thrown.
24371
24372 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24373
24374         * mini.c: check for overruns in IL code.
24375
24376 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24377
24378         * TODO: Add/remove some todo entries.
24379
24380 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24381
24382         * driver.c (mono_main): Call mono_verify_corlib.
24383
24384 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24385
24386         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24387         This has been moved to mini.c
24388         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24389         type being casted is marshalbyref it could be a proxy, so instead of
24390         emitting the type check code, emit a call to a runtime method that will
24391         perform the check by calling CanCastTo if needed.
24392
24393 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24394
24395         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24396         methods with large stack frames under Win32.
24397
24398 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24399
24400         * Makefile.am: Distribute regression tests.
24401
24402         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24403         at the end instead of inserting each variable into the sorted list.
24404
24405         * linear-scan.c (mono_varlist_sort): New helper function.
24406         
24407 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24408
24409         * mini.c: ensure arguments and locals are within bounds.
24410
24411 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24412
24413         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24414         related fixes.
24415
24416 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24417
24418         * mini.c (mono_cprop_copy_values): Fix crash.
24419
24420         * aot.c: Set verbosity back to 0.
24421         
24422 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24423
24424         * regalloc.c: complete memory leak fix by Laurent Morichetti
24425         (l_m@pacbell.net).
24426
24427 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24428
24429         * driver.c (main_thread_handler): Revert the previous patch.
24430
24431         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24432         under valgrind.
24433
24434         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24435         memory from the memory pool.
24436
24437         * driver.c (main_thread_handler): Turn on all optimizations when
24438         --aot is used.
24439
24440         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24441         an array for better performance.
24442
24443         * regalloc.c (mono_regstate_assign): Fix memory leak.
24444
24445         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24446         serialize the debug info.
24447
24448         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24449         debug info from the serialized representation.
24450
24451         * aot.c: Save debug info into the generated file and load it when 
24452         loading a method.
24453
24454         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24455
24456 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24457
24458         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24459         More FP-related fixes.
24460
24461 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24462
24463         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24464         and register allocation buglet. Hello world now runs.
24465
24466 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24467
24468         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24469         * tramp-ppc.c: fixed class init trampoline.
24470         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24471
24472 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24473
24474         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24475         mini.c: more ppc changes/fixes.
24476
24477 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24478
24479         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24480         Also optimize the case when the arguments are the same in the caller 
24481         and in the callee.
24482
24483         * iltests.il: Add tests for tail calls with valuetype arguments.
24484
24485 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24486
24487         * mini-ppc.c: fixes for struct return type.
24488
24489 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24490
24491         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24492         mono_spillvar_offset() to arch-specific code.
24493
24494 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24495
24496         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24497
24498 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24499
24500         * exceptions-x86.c: Fix stack space leaks.
24501         
24502         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24503         registers from the lmf if the method has save_lmf set.
24504
24505 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24506
24507         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24508         of icall wrappers into InvokeInDomain, since these are now per-domain.
24509
24510 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24511
24512         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24513         make some opcode emulation and intrinsic ops enabled/disabled 
24514         according to the architecture. More fixes.
24515
24516 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24517
24518         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24519
24520 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24521
24522         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24523         arch-specific handling for 'this' and struct return type to
24524         arch-specific code.
24525
24526 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24527
24528         * aot.c: prevent divide by zero error when reporting (it happened with
24529         Accessibility.dll).
24530
24531 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24532
24533         * mini.h (inst_switch): Remove unused macro.
24534
24535 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24536
24537         * aot.c:
24538         (load_aot_module): free 'info->methods' and 'info' properly. No more
24539         "free(): invalid pointer blah" messages when you have an old aot
24540         compiled assembly.
24541
24542 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24543
24544         * jit-icalls.c, mini.c: Added support for context static fields.
24545
24546 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24547
24548         * mini.c (mono_method_blittable): Methods which set LastError are not 
24549         blittable either. Fixes #51108.
24550         
24551 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24552
24553         * mini.c: flush icache.
24554         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24555
24556 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24557
24558         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24559
24560 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24561
24562         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24563         safe on IA32.
24564
24565         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24566         vararg calls.
24567
24568         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24569
24570 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24571
24572         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24573         instruction when the result is discarded.
24574
24575         * iltests.il (test_0_div_regalloc): New regression test.
24576
24577         * arrays.cs: Fix compilation error.
24578
24579 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24580
24581         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24582         float rules to inssel-x86.brg: sane architectures with FP registers
24583         don't need to implement these rules.
24584
24585 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24586
24587         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24588
24589 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24590
24591         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24592         implementation of 32 bit systems.
24593
24594 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24595
24596         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24597         (Jeroen Zwartepoorte).
24598
24599 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24600
24601         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24602         the caller and the callee matches.
24603         
24604         * mini.c (mono_method_to_ir): Add comment.
24605
24606         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24607         signbit is missing on some platforms.
24608
24609 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24610
24611         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24612
24613         * mini.c (setup_jit_tls_data): Call the new function.
24614         
24615         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24616
24617         * mini-x86.c: Add experimental support for fast access to the lmf
24618         structure under NPTL/Linux 2.6.x.
24619
24620 2003-11-06  Martin Baulig  <martin@ximian.com>
24621
24622         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24623         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24624         the debugger.
24625
24626 2003-11-02  Martin Baulig  <martin@ximian.com>
24627
24628         * mini.c (inflate_generic_field): New static method.
24629         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24630         generic instance and the field is declared in a generic type, call
24631         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24632
24633 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24634
24635         * mini.h mini.c (mono_method_same_domain): New function to return
24636         whenever the caller and the callee are in the same domain.
24637
24638         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24639
24640 2003-10-30  Martin Baulig  <martin@ximian.com>
24641
24642         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24643         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24644         method parameters.
24645         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24646         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24647
24648 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24649
24650         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24651         propagation.
24652
24653         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24654         object here, so it is in the correct appdomain etc.
24655
24656 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24657
24658         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24659         already done.
24660         (mono_method_to_ir): Avoid freeing the type created returned from
24661         mono_type_create_from_typespec, since it is put into an internal cache
24662         by the function. Fixes pointer.exe.
24663
24664         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24665         trampolines for icalls and pinvokes as well. Fixes #33569.
24666
24667 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24668
24669         * mini.c: Update after appdomain changes.
24670
24671         * mini.c (mono_jit_compile_method_inner): Allways compile native
24672         method wrappers in the root domain, since there can only be one
24673         instance of them, whose address is stored in method->info.
24674
24675 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24676
24677         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24678         environment variable. Instead detect automatically whenever running
24679         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24680         valgrind.h.
24681
24682 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24683
24684         * trace.c, trace.h: New files that implement the new trace option
24685         parsing. 
24686
24687         * driver.c: Document new --trace options.
24688
24689         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24690         mini-x86.c: Apply:
24691
24692         -       if (mono_jit_trace_calls)
24693         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24694
24695         * mini.h: prototypes.
24696         
24697 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24698
24699         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24700
24701         * mini.c inssel.brg: Implement typedefbyref opcodes.
24702
24703         * mini.c (mono_jit_compile_method): Remove unused local variable.
24704
24705         * mini.c (mono_jit_compile_method_inner): Ditto.
24706         
24707 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24708
24709         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24710         
24711         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24712
24713 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24714
24715         * mini.c (mono_no_aot): Remove unused global variable.
24716
24717         * mini.c: Thread safety fixes.
24718
24719 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24720
24721         * mini.c (mono_create_class_init_trampoline): Add a lock around
24722         class_init_hash_addr.
24723
24724         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24725         #30073.
24726
24727         * mini.c: Decompose the NEWARR instruction before decomposing its
24728         arguments. Fixes #30073.
24729
24730 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24731
24732         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24733         convention.
24734
24735 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24736
24737         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24738
24739         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24740
24741         * driver.c: Add support for compiling icall wrappers to --compile.
24742
24743 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24744
24745         * inssel.brg: The empty value in class->interface_offsets is -1, not
24746         0. Fixes #49287.
24747
24748 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24749
24750         * objects.cs: New test for 'is' operator on an array of interfaces.
24751
24752 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24753
24754         * tramp-ppc.c: update trampoline code to support jumps
24755         and class initialization.
24756
24757 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24758
24759         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24760
24761         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24762
24763         * inssel.brg (OP_UNBOX): Remove unused rule.
24764
24765         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24766         region instead of one for each method. Fixes #47813.
24767
24768 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24769
24770         * exceptions.cs (test_0_nested_finally): New regression test for
24771         nested exception handlers.
24772
24773         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24774
24775         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24776
24777         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24778         inlining.
24779
24780         * mini.c (mono_method_check_inlining): Make the inlining limit 
24781         configurable by an environment variable.
24782         
24783         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24784
24785         * mini.h: Bump AOT file version.
24786
24787         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24788         token, store the image along with the token, since the token might not 
24789         refer to the same image as the method containing the relocation, 
24790         because of inlining.
24791
24792 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24793
24794         * mini.c (mono_precompile_assemblies): New function to compile
24795         all methods in all loaded assemblies.
24796
24797         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24798
24799         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24800         iassign and fassign to int*, since they can contain large negative
24801         values if the register is spilled. Also added some comments. Fixes
24802         #45817.
24803
24804         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24805         under Win32. Fixes #42964.
24806
24807 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24808
24809         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24810
24811         * aot.c: Added support for AOT compiling methods which contain calls
24812         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24813         handled.
24814         
24815         * driver.c (compile_all_methods): Run the compilation in a thread
24816         managed by mono. Fixes #44023.
24817
24818         * mini.c (mono_codegen): Print full method name in verbose output.
24819
24820         * mini-x86.c (mono_arch_patch_code): Fix warning.
24821         
24822         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24823         jumps, since the method we are jumping to might be domain-specific.
24824
24825         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24826
24827 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24828
24829         * inssel.brg: string chars are unsigned.
24830
24831 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24832
24833         * TODO: New todo item.
24834
24835         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24836         which calls mono_runtime_class_init and patches the call site to
24837         avoid further calls.
24838         (mono_arch_create_class_init_trampoline): New arch specific function 
24839         to create a class init trampoline.
24840         (create_trampoline_code): Generalized so it can create
24841         class init trampolines as well.
24842
24843         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24844         (mono_create_class_init_trampoline): New function to create and cache
24845         class init trampolines.
24846         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24847         vtable given the address of a class init trampoline. Used by the
24848         patching process.
24849         (mono_codegen): Generate a call to a trampoline instead of
24850         mono_runtime_class_init in LDSFLD[A].
24851         (mono_codegen): Add relocations for the new trampoline.
24852         
24853         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24854         MONO_PATCH_INFO_CLASS_INIT.
24855
24856         * mini.h: Bump AOT version number.
24857
24858         * aot.c: Create a copy of the loaded code instead of using the original
24859         so methods which call each other will be close in memory, improving
24860         cache behaviour.
24861         
24862         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24863         patch since it breaks the regression tests.
24864         
24865         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24866         for the register saving instruction sequence since the 
24867         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24868
24869 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24870
24871         * TODO: Fix todo item && remove another.
24872
24873 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24874
24875         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24876         previous checkin.
24877
24878         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24879         function of the module.
24880
24881         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24882         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24883         --no-aot command line option.
24884
24885 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24886
24887         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24888         by Bernie Solomon (bernard@ugsolutions.com).
24889
24890         * inssel.brg: Refactor the interface offset table related code into
24891         its separate functions and add support for the AOT case.
24892
24893 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24894
24895         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24896         
24897         * aot.c: Added mono_aot_verbose variable and made all debugging
24898         output depend on the value of this variable.
24899
24900         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24901         method_label and info_label.
24902
24903         * mini.h mini-x86.c aot.c: Added a new relocation type 
24904         MONO_PATCH_INFO_IID for klass->interface_id.
24905
24906         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24907         the MonoJitInfo structure.
24908
24909         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24910         a non-root appdomain in shared mode.
24911
24912 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24913
24914         * aot.c: make aot loader less verbose. Remove free of unused variable.
24915
24916 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24917
24918         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24919
24920         * .cvsignore: Added *.dll.
24921
24922         * mini.c (mono_print_tree_nl): New function callable while debugging.
24923
24924         * mini.c (mono_print_code): Export this.
24925
24926         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24927         patched code.
24928
24929 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24930
24931         * mini.h (MonoCompile): Added 'jit_info' field.
24932
24933         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24934         the cfg structure, since it is needed by the AOT compiler.
24935
24936         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24937
24938         * aot.c: A major rewrite. Changes include:
24939         - save exception tables for methods which have them.
24940         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24941         to g_module_symbol.
24942         - reworked the file format so it is now much smaller and needs
24943         fewer relocation entries.
24944         
24945 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24946
24947         * aot.c (load_aot_module): Fix build bustage on platforms without
24948         Boehm GC.
24949
24950 2003-09-04  Martin Baulig  <martin@ximian.com>
24951
24952         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24953
24954 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24955
24956         * TODO: Some new optimization ideas.
24957
24958         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24959
24960         * aot.c: Save the optimization flags used to compile the code into
24961         the AOT module.
24962
24963         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24964         support emitting domain specific code.
24965         
24966         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24967         no longer domain neutral. It can be made domain neutral by compiling 
24968         with --optimize=shared.
24969
24970         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24971         between appdomains.
24972
24973         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24974         loading of AOT code.
24975
24976         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24977         
24978         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24979         if there is no domain neutrality information.
24980
24981 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24982
24983         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24984         format version into the generated library.
24985
24986         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24987         callee method into the caller since one of them could be shared.
24988
24989         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24990         system exceptions from AOT code now works.
24991
24992         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24993         method if it is domain neutral and the callee is not.
24994
24995         * graph.c (cfg_emit_one_loop_level): Fix warning.
24996
24997 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24998
24999         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25000         last checkin.
25001
25002 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25003
25004         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25005         is needed  by code which is executed before mono_runtime_init ().
25006         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25007         
25008         * mini.c (mono_thread_abort): Fix warning.
25009         (mono_jit_compile_method): Call static constructor in the AOT case too.
25010
25011         * aot.c (mono_compile_assembly): Fix warning.
25012
25013 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25014
25015         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25016
25017 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25018
25019         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25020
25021         * cpu-pentium.md: Fix the length of call opcodes so they include the
25022         ESP restoring instruction. Fixes #47968.
25023
25024 2003-08-28  Martin Baulig  <martin@ximian.com>
25025
25026         * mini-x86.c (mono_arch_call_opcode): Added support for
25027         MONO_TYPE_GENERICINST.
25028
25029         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25030
25031 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25032
25033         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25034         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25035
25036         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25037         metadata_section.
25038
25039 2003-08-26  Martin Baulig  <martin@ximian.com>
25040
25041         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25042         when reporting an error, set this to the actual error location.
25043         (mono_method_to_ir): Report the correct error location if
25044         get_basic_blocks() returned an error.
25045
25046 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25047
25048         * mini.c (mono_type_blittable): OBJECT is not blittable.
25049         (mono_method_blittable): Methods which have marshalling descriptors
25050         are not blittable either. Fixes #47842.
25051
25052 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25053
25054         * driver.c mini.c: Use an environment variable instead of a global 
25055         variable. Also fix the build.
25056
25057         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25058         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25059         reporting this. 
25060
25061         * driver.c mini.c: Added --with-valgrind option to turn off some
25062         code which prevents mono from running under valgrind.
25063
25064         * mini.c (mono_emit_call_args): Fixed warning.
25065
25066         * mini.c (mono_emulate_opcode): Fixed warning.
25067
25068 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25069
25070         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25071         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25072         regalloc.c, regalloc.h: specify available registers in arch-specific
25073         code and support floats in the regallocator (patch by Laurent Morichetti 
25074         <l_m@pacbell.net>)
25075
25076 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25077
25078         * mini.c: mono_thread_current() can be called only after
25079         mono_runtime_init(): rearrange code to not call it early on.
25080
25081 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25082
25083         * mini.c: allocate jump tables in the code mempools.
25084
25085 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25086
25087         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25088         freed.
25089
25090 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25091
25092         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25093         12 to 16.  This fixes bug #47453.
25094
25095
25096 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25097
25098         * mini-ppc.c: fixed indexed load and unsigned compares.
25099
25100 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25101
25102         * mini.c: reenabled installation of handler for
25103           thread abort signal.
25104
25105 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25106
25107         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25108         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25109         until it's fixed and actually useful.
25110
25111 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25112
25113         * inssel-long32.brg: couple more opcodes implemented.
25114
25115 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25116         
25117         * mini-sparc.c: Even more opcodes implemeted.
25118
25119 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25120
25121         * mini-sparc.c: More opcodes implemented.
25122
25123 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25124
25125         * mini-sparc.c: More opcodes implemented.
25126
25127 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25128
25129         * inssel-sparc.brg: Add some needed rules.  Direct
25130         copy from PPC.
25131         * Makefile.am: Use inssel-sparc.brg
25132         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25133         an assert happy for now.
25134
25135 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25136
25137         * mini-sparc.c: Fixed compile errors.
25138         * exceptions-sparc.c: Same.  We now produce a mono binary 
25139         on sparc-linux.  Yea.
25140
25141 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25142
25143         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25144         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25145         They compile, but do not work.
25146
25147 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25148
25149         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25150         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25151         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25152         (ct@gentoo.org).
25153
25154 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25155
25156         * mini.c: more opcodes implemented and better support for generics.
25157
25158 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25159
25160         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25161         * mini.c, mini.h: first cut at generics support: some new instructions 
25162         added and changed the behaviour of some of the existing ones.
25163
25164 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25165
25166         * mini.c: Removed definition of metadata_shared mutex here.
25167
25168 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25169
25170         * mini-x86.c: make vararg calls work for instance methods.
25171
25172 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25173
25174         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25175         returns the arguments in a separte list, now.
25176
25177 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25178
25179         * aot.c, mini.c: updates for array type representation changes.
25180
25181 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25182
25183         * mini.c: register function to perform jit shutdown.
25184
25185 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25186
25187         * mini.c: use a faster allocator if possible.
25188
25189 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25190
25191         * aot.c: some cleanups and portability changes.
25192
25193 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25194
25195         * mini.c: use faster allocation for CEE_BOX if possible.
25196
25197 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25198
25199         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25200         Moved inlined mempcy code to its own function so that is can be
25201         reused. Added an inline memset function as well (optimized initobj).
25202         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25203
25204 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25205
25206         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25207
25208 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25209
25210         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25211         arch code can setup the cpu for CLR execution, if needed.
25212         We use it on x86 to set the precision of FP operations.
25213
25214 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25215
25216         * mini.c: disable some optimizations if we can guess they'll cost too
25217         much for a given method.
25218
25219 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25220
25221         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25222         
25223 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25224         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25225         info collection support.
25226
25227 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25228
25229         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25230         is now implemented in the profiling API. Get rid of a couple of
25231         unnecessary global variables.
25232
25233 2003-06-15  Nick Drochak <ndrochak@gol.com>
25234
25235         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25236         * cpu-g4.md: add op_bigmul and op_bigmul_un
25237         * cpu_pentium.md: add op_bigmul_un
25238         * inssel-long32.brg: add rule for unsigned bigmul
25239         * mini-ops.h: define OP_BIGMUL_UN
25240         * mini-x86.c: THE BUG: handle (un)signed properly
25241         * mini.c: choose unsigned opcode if needed.
25242         This set of patches fixes bug #44291
25243
25244 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25245
25246         * mini.c (optimize_branches): improved to handle all kinds of
25247         conditional branches.
25248
25249 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25250
25251         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25252         don't raise exceptions.
25253
25254 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25255
25256         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25257         to arch-specific files.
25258
25259 2003-06-09  Martin Baulig  <martin@ximian.com>
25260
25261         * Makefile.am (libs): Added $(LIBGC_LIBS).
25262
25263 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25264
25265         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25266         and OP_ATAN (fixes bug#44293).
25267
25268 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25269
25270         * Makefile.am, mini-x86.c: rename cpu description array to
25271         pentium_desc, since some compilers define the 'pentium' preprocessor
25272         symbol.
25273
25274 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25275
25276         * mini.c (mini_select_instructions): add explicit branch if the
25277         following block is not the false target of a conditional branch -
25278         we need this with any optimization that reorder or remove bblocks
25279
25280         * mini.c (optimize_branches): bug fixes
25281
25282 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25283
25284         * mini.c (mono_method_to_ir): inline static readonly fields
25285
25286         * ssa.c (fold_tree): start cfold support for long (very simple
25287         cases only)
25288
25289         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25290
25291 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25292
25293         * inssel.brg: fixed memcpy (bug #44219).
25294
25295 2003-06-05  Dick Porter  <dick@ximian.com>
25296
25297         * driver.c: Set the glib log levels to not abort if g_message
25298         recurses.
25299
25300         g_set_prgname() has to happen before mini_init() so that the
25301         process handle gets the info.
25302         
25303 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25304
25305         * driver.c: add intrins to the default optimizations to get wider
25306         exposure.
25307
25308 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25309
25310         * mini.h: some large basic blocks will overflow a 16-bit
25311         integers for symbolic registers.
25312
25313 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25314
25315         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25316         (mono_arch_output_basic_block): fix bug 43499 
25317
25318 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25319
25320         * mini.c: kill duplicated definition of mono_debug_format.
25321
25322 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25323
25324         * mini-x86.c, arrays.cs: fixed register allocation bug.
25325
25326 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25327
25328         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25329
25330         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25331
25332 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25333
25334         * mini.c:
25335         (print_method_from_ip): also print source location information if
25336         available.
25337
25338 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25339
25340         * mini.c (mono_find_block_region): bug fix in region code
25341         (mini_method_compile): enable removing unreachable code again, but
25342         only in methods without exception clauses.
25343
25344 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25345
25346         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25347         Implemented arglist opcode and handling of TypedReference type.
25348         Fixed x86 call convention when a structure is returned.
25349         Minimal support for calling static vararg methods.
25350
25351 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25352
25353         * mini.c (mini_method_compile):  always remove unreachable code,
25354         because the code in them may be inconsistent  (access to dead
25355         variables for example).
25356
25357 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25358
25359         * driver.c, debug-mini.c: warning fixes.
25360
25361 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25362
25363         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25364
25365 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25366
25367         * mini.c: thread-static fields are registered in mono_class_vtable(),
25368         so ensure the function is called before checking for them.
25369
25370 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25371
25372         * mini.c (optimize_branches): fix for bug 43586
25373
25374         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25375         overflow (fixes Bug #43639)
25376
25377 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25378
25379         * mini.c, objects.cs: allow the use of stobj for primitive types.
25380
25381 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25382
25383         * mini.c: be less strict about argument checking until we support
25384         running the verifier.
25385
25386 2003-05-27  Nick Drochak <ndrochak@gol.com>
25387
25388         * basic-long.cs: tests for (ulong)int * (ulong)int also
25389         * mini.c: use the same trick for (ulong)int * (ulong)int
25390
25391 2003-05-27  Nick Drochak <ndrochak@gol.com>
25392
25393         * basic-long.cs: add regression test for (long)int * (long)int
25394         * cpu-pentium.md: add op_bigmul specification
25395         * inssel-long32.brg: add OP_BIGMUL rule
25396         * mini-ops.h: add OP_BIGMUL
25397         * mini-x86.c: register allocator: handle case where src1 needs to be
25398         in EAX.
25399         * mini.c: substitute special BIGMUL opcode in the tree for 
25400         (long)int * (long)int
25401
25402 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25403
25404         * jit-icalls.c: call the type ctor on field access if needed.
25405
25406 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25407
25408         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25409         to a method (including results of ldelema, bug#43207).
25410
25411 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25412
25413         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25414         colors to show exception handler blocks.
25415
25416         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25417         (fix for pinvoke7.cs).
25418
25419 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25420
25421         * mini.h, mini.c: ensure correct initialization order for types that
25422         require it. Prepare for lazy compilation of jit icall wrappers.
25423         Provide a name for opcode emulation to reduce unneeded mallocing.
25424
25425 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25426
25427         * mini-x86.c: better register restoring code and profiling
25428         support for tail calls.
25429
25430 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25431
25432         * mini.h, driver.c: prepare for leaf methods optimization.
25433
25434 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25435
25436         * mini.c: get targets of branches before converting a method.
25437
25438 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25439
25440         * mini.c (optimize_branches): added some experimental code (disbaled) 
25441
25442 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25443
25444         * mini.c (optimize_branches): fix branch to branch optimization 
25445
25446         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25447
25448         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25449
25450         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25451
25452         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25453         if needed.
25454
25455 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25456
25457         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25458         enable use of interface variables again.
25459
25460         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25461         I1 to registers because there is no simply way to sign extend 8bit
25462         quantities in caller saved registers on x86.
25463
25464         * inssel-float.brg: set costs of some rules to 2 so
25465         that monobure always select the arch. specific ones if supplied,
25466         regardless of the order we pass the files to monoburg.
25467
25468 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25469
25470         * mini.c, mini-x86.c: since the magic trampoline for jumps
25471         can't patch the code directly, we do it as soon as the
25472         method gets compiled.
25473
25474 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25475
25476         * mini-x86.c, mini.h: introduce a new patching method
25477         to support CEE_JMP and tail calls.
25478         * mini.c: obey tail.call. Don't precompile methods target
25479         of CEE_JMP.
25480         * tramp-x86.c: new trampoline code to handle methods
25481         reached through a jump.
25482
25483 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25484
25485         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25486         bit values to registers
25487
25488 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25489
25490         * mini.c (mono_compile_get_interface_var): share interface
25491         variables if possible.
25492
25493 2003-05-16  Martin Baulig  <martin@ximian.com>
25494
25495         * debug-mini.c (mono_init_debugger): New function to initialize
25496         the debugger.  This is not in the debugger since it needs to
25497         access some of mini's internals.
25498
25499 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25500
25501         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25502
25503 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25504
25505         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25506         for value type handling.
25507
25508 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25509
25510         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25511         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25512
25513 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25514
25515         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25516           the constructor through a proxy.
25517
25518 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25519
25520         * jit-icalls.c, inssel.brg: fixes to array element address
25521         calculations.
25522
25523 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25524
25525         * mini-x86.c (is_regsize_var): allocate pointer to registers
25526
25527 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25528
25529         * driver.c: fixed typo, added intrins to the set of optimizations
25530         tested with regressions.
25531
25532 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25533
25534         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25535         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25536         test case.
25537
25538 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25539
25540         * inssel.brg: remove some common pop instructions without side effects
25541
25542 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25543
25544         * inssel-x86.brg: fixed thinko in int to double conversions.
25545
25546 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25547
25548         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25549
25550 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25551
25552         * inssel-long32.brg: two more missing instructions.
25553
25554 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25555
25556         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25557         if not already set.
25558
25559 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25560
25561         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25562         correctly.
25563
25564         * basic-float.cs: Added tests for negative zero.
25565
25566 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25567
25568         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25569         a couple of missing operations for long casts, with test cases.
25570
25571 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25572
25573         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25574
25575 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25576
25577         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25578         code size estimation.
25579
25580 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25581
25582         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25583         abstract methods (fix bug 42542)
25584
25585         * aot.c: add ability to handle array types
25586         
25587 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25588
25589         * mini.c: Call the _specific versions of the object allocation
25590         functions if possible.
25591
25592 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25593
25594         * driver.c: call setlocale ().
25595
25596 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25597
25598         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25599         windows build.
25600
25601 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25602
25603         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25604
25605         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25606         wrappers (fix bug 42122)
25607
25608 2003-05-04  Martin Baulig  <martin@ximian.com>
25609
25610         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25611
25612         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25613         s/mini_set_defaults/mono_set_defaults/g.
25614
25615 2003-05-04  Martin Baulig  <martin@ximian.com>
25616
25617         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25618
25619 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25620
25621         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25622         (reported by Don Roberts).
25623
25624 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25625
25626         * mini.c: temporarily work around two bugs for this release.
25627
25628 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25629
25630         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25631         that contains -export-dynamic and it makes using the ld script
25632         useless.
25633         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25634
25635 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25636
25637         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25638         specific cpu.
25639
25640 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25641
25642         * mini.c: make sure leave calls all the needed finally blocks,
25643         even when the target jumps out of multiple exception clauses.
25644
25645 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25646
25647         * ldscript, Makefile.am: add linker script to reduce the number of
25648         exported symbols (should also fix the issues with libwine defining
25649         some of the same symbols in io-layer).
25650
25651 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25652
25653         * driver.c (mini_main): Avoid assertion when no file name is given on 
25654         the command line.
25655
25656 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25657
25658         * driver.c: added --version/-V command line option.
25659         Added the inline optimization in the regression tests.
25660
25661 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25662
25663         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25664         to the type in the method signature (fixes bug#42134).
25665
25666 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25667
25668         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25669
25670 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25671
25672         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25673
25674 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25675
25676         * driver.c: fixed bug #42100.
25677
25678 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25679
25680         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25681
25682 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25683
25684         * mini.c: moved most of the code required to do inlining to its own
25685         function so it can be reused. Inline also ctors if appropriate.
25686
25687 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25688
25689         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25690         the runtime can call mono API functions.
25691
25692 2003-04-27  Martin Baulig  <martin@ximian.com>
25693
25694         * debug-mini.c (mono_debug_init_method): Added
25695         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25696         send a notification to the debugger.
25697
25698         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25699         running in the Mono Debugger, just pass the breakpoint number to
25700         mono_debug_init_method().
25701
25702         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25703
25704 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25705
25706         * mini.c: allow some more unsafe compares.
25707
25708 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25709
25710         * mini-x86.c, Makefile.am: make distcheck works (partially from
25711         a patch by Richard Lee <r.h.lee@attbi.com>).
25712         * regset.c, regset.h: removed, they are unused.
25713
25714 2003-04-25  Dick Porter  <dick@ximian.com>
25715
25716         * driver.c: Usage reports the name as 'mono' not 'mini'
25717         * exceptions-x86.c: Build and run on freebsd
25718
25719 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25720
25721         * Makefile.am: install the program with the 'mono' name and
25722         the library as libmono instead of mini and libmini.
25723
25724 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25725
25726         * driver.c: provide the APIs for the embedding interface of the old jit.
25727
25728 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25729
25730         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25731
25732 2003-04-23  Martin Baulig  <martin@ximian.com>
25733
25734         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25735
25736         * driver.c: Added `--debug' command line argument to enable
25737         debugging support.
25738
25739 2003-04-23  Martin Baulig  <martin@ximian.com>
25740
25741         * debug.[ch]: Removed.  The code is now in
25742         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25743
25744         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25745         last six months.
25746
25747 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25748
25749         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25750
25751 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25752
25753         * mini.c:
25754         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25755         mono_domain_finalize.
25756         (mini_method_compile): use mono_method_profile* if the the option is
25757         enabled.
25758
25759 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25760
25761         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25762         methods with their wrapper.
25763
25764         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25765         methods with their wrapper.
25766
25767         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25768         their wrapper.
25769
25770         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25771         wrapper.
25772
25773         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25774         methods.
25775
25776 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25777
25778         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25779
25780 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25781
25782         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25783         of the mempool. This is slightly faster and uses less memory
25784
25785 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25786
25787         * mini.c: avoid O(n) allocation for variables.
25788
25789 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25790
25791         * mini.c: handle items on the stack after inlining methods.
25792
25793 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25794
25795         * mini.c: make the method->opcode optimization dependent
25796         on MONO_OPT_INSTRINS and do it lazily.
25797
25798 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25799
25800         * driver.c: print overall results at the end of regression run.
25801
25802 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25803
25804         * inssel.brg: don't overwrite symbolic registers.
25805
25806 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25807
25808         * inssel-x86.brg: fix conversion from long to float.
25809
25810 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25811
25812         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25813
25814 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25815
25816         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25817
25818         * driver.c: Added --print-vtable option as in the old JIT.
25819
25820 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25821
25822         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25823
25824 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25825
25826         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25827
25828 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25829
25830         * mini.c regalloc.c regalloc.h: Fix memory leak.
25831
25832 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25833
25834         * aot.c (mono_aot_get_method): register all used strings
25835
25836 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25837
25838         * mini.c: always intern strings references with ldstr at compile time.
25839
25840 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25841
25842         * Makefile.am: add BUILT_SOURCES.
25843
25844 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25845
25846         * driver.c: give a better error message when the assembly to execute
25847         doesn't have an entry point.
25848
25849 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25850
25851         * Makefile.am: added hack for automake
25852
25853         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25854         correct sematics.
25855
25856         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25857
25858 22003-04-07  Martin Baulig  <martin@ximian.com>
25859
25860         * Makefile.am: Added Makefile.am.
25861
25862         * debugger-main.c: Removed, this is now in the debugger where it
25863         belongs.
25864
25865         * mini.pc.in: Call this package `mini' for the moment.
25866
25867
25868
25869
25870
25871
25872
25873
25874
25875
25876
25877
25878
25879
25880