adefca52665a57a60db88cc65e4035dff17fb61f
[mono.git] / mono / mini / ChangeLog
1 2010-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * mini.c (mono_jit_compile_method_inner): Don't bomb out if we don't
4         support a given runtime implemented method.
5
6 2010-07-10  Mark Probst  <mark.probst@gmail.com>
7
8         * mini-darwin.c: Register the exception thread with the GC.
9
10 2010-07-10  Zoltan Varga  <vargaz@gmail.com>
11
12         * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
13         mono branch.
14
15 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
16
17         * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
18         from constant memory.
19
20         * ir-emit.h: Clean up the _FAULT macros a bit.
21
22         * decompose.c: Mark some loads as constant.
23
24         * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
25
26 2010-07-09  Miguel de Icaza  <miguel@novell.com>
27
28         * driver.c (mini_usage): Change the name of the --sgen flag to be
29         --gc=sgen and also support --gc=boehm.   These flags can also be
30         set on MONO_ENV_OPTIONS to propagate this to children processes.
31
32         * main.c: Remove the MONO_VM_OPTIONS environment variable that
33         only supported "sgen" and "llvm" config options and instead parse
34         the MONO_ENV_OPTIONS as options that are parsed by the command
35         line parser.   Any command line option that Mono supports can be
36         passed in this environment variable.
37
38 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
39
40         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
41         LLVM.
42
43         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
44         it can now eliminate more than just bounds checks.
45
46         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
47         an extra 'fault' argument.
48
49         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
50         later.
51
52         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
53         decomposition.
54
55         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
56         no longer generated when LLVM is used.
57
58         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
59
60 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
61
62         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
63
64 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
65
66         * driver.c: Moonlight: Force line buffering for stdout.
67
68 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
69
70         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
71         are only callable using invoke.
72
73 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
74
75         * mini-llvm.c (process_bb): Use emit_load () in one more place.
76
77         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
78         MONO_LLVM=xxx is actually usable.
79
80         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
81         since LLVM might be able to hoist them out of loops.
82         (emit_store): Ditto.
83
84 2010-07-08  Neale Ferguson <neale@sinenomine.net>
85
86         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
87         in typeload-unaligned test.
88
89 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
90
91         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
92
93         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
94         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
95         generic trampolines+rgctx fetch trampolines.
96
97 2010-07-08  Geoff Norton  <gnorton@novell.com>
98
99         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
100
101 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
102
103         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
104
105         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
106         is not defined in the LLVM case to keep the imt arg alive.
107
108 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
109
110         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
111         functions, now its 'llvm_<FOO>_trampoline'.
112
113         * method-to-ir.c (emit_imt_argument): Fix llvm support.
114
115         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
116         cannot be passed in the same call.
117
118         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
119         register to be the same as the RGCTX register, the two can't be used together on
120         the same call.
121
122 2010-07-05  Miguel de Icaza  <miguel@novell.com>
123
124         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
125         that allows the user to force the VM to use llvm or sgen.
126
127 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
128
129         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
130         before processing the exception on PPC too.
131
132         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
133
134         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
135         'this' is always passed as the first argument, before the vtype ret arg. This
136         simplifies get_this_arg_reg () and LLVM integration.
137
138 2010-07-05  Martin Baulig  <martin@ximian.com>
139
140         * exceptions-x86.c (mono_arch_handle_exception): Port this to
141         Windows; apply my patch from r159782 in the mono-2-6 branch.
142
143 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
144
145         * Makefile.am: Don't build the debug assembler files if we're building without
146         debugger support.
147
148 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
149
150         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
151
152 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
153
154         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
155         length.
156
157         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
158         regs [ARMREG_FP] instead.
159
160         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
161
162         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
163         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
164
165         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
166
167         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
168
169         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
170
171         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
172         without IMT_REG defined (ARM).
173
174         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
175         the trampolines.
176
177 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
178
179         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
180
181 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
182
183         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
184         definitions to match their declarations and vice-versa.
185
186 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
187
188         * Makefile.am (common_sources): Add mini-llvm.h.
189
190         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
191
192 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
193
194         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
195         compiling.
196
197 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
198
199         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
200         implemt the option of loading the llvm backend from a module so
201         that we can have a single binary and the bloat from llvm is
202         only experienced when it is actually loaded.
203
204 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
205
206         * mini-llvm.c: remove direct access to mono_defaults.
207
208 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
209
210         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
211         a no-op.
212
213         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
214
215         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
216         is now mono_arch_nullify_class_init_trampoline ().
217         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
218         opcodes, they are no longer needed.
219
220         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
221         now mono_arch_nullify_class_init_trampoline ().
222         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
223         opcodes, they are no longer needed.
224
225         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
226         vtable on platforms which support it.
227
228         * driver.c: Print the full LLVM version we are compiled against in --version.
229
230         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
231         a bit better. Decode nesting information to fix eh support for llvm+aot.
232
233         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
234         methods.
235
236         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
237
238         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
239         is always passed as the first argument, before the vtype ret arg. This simplifies
240         get_this_arg_reg () and LLVM integration.
241
242 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
243
244         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
245         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
246         most of the vcall specific code to mono_vcall_trampoline () from
247         common_call_trampoline ().
248
249 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
250
251         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
252         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
253         if the callsite is patched.
254
255         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
256         the llvm branch.
257
258         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
259         the trampoline in the xdebug info.
260
261         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
262         as well.
263
264 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
265
266         * mini-llvm.c: Fix a few problems exposed by make check.
267
268 2010-06-25  Mark Probst  <mark.probst@gmail.com>
269
270         * mini-trampolines.c (common_call_trampoline): An ugly hack to
271         work around a potentially very hard to fix problem with inflating
272         generic methods.
273
274 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
275
276         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
277         problem has been fixes.
278
279 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
280
281         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
282
283         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
284         It might be be better to define a MonoGCJitOptions structure later and have the
285         GC return that.
286
287         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
288
289         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
290
291         * debugger-agent.c (get_objref): Implement support for sgen.
292
293         * driver.c: Remove the unused gc_wrapper.h include.
294
295         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
296         implementation.
297
298 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
299
300         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
301
302         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
303         in MonoCompile.
304
305         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
306         instead.
307
308 2010-06-23  Miguel de Icaza  <miguel@novell.com>
309
310         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
311         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
312
313         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
314         it only for Boehm diagnostics.
315
316         * Makefile.am: Make the file a bit more consistent.
317
318         * debug-debugger.c: Wrap the entire file with an #ifdef
319         MONO_DEBUGGER_SUPPORTED to simplify the build.
320
321         * Makefile.am: Fix the opcodes build issue by including the
322         source, not by including the .lo file directly
323
324         Always bring the MDB sources into the build, to drop the
325         dependency on the AM_CONDITIONAL from configure.in as the hard
326         debugger supports Boehm, but not Sgen, this simplifies the build. 
327
328         * Renamed the *.s files into *.S
329
330 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
331
332         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
333         wb for now on 64bits systems while issues with valuetype returns
334         are not fixed.
335
336 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
337
338         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
339         passes by calling createStandardFunctionPasses ().
340
341 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
342
343         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
344
345 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
346
347         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
348         MONO_INST_FAULT.
349
350         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
351         allow better optimization if the OP_LDADDR which caused the flag to be set was
352         optimized away.
353
354         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
355
356         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
357         the type token.
358
359         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
360
361         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
362
363 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
364
365         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
366         to handle the code sequence generated for non-near calls. Fixes #616056.
367
368 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
369
370         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
371
372         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
373
374         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
375         nesting clause too.
376         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
377         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
378         trampoline which saves the context, so changes made to callee saved registers in
379         finally clauses are visible to a nesting catch clause.
380
381         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
382
383         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
384         in LLVM compiled code.
385         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
386         the finally handler has ran.
387
388         * mini.h (ResumeState): New structure containing information required to resume
389         exception handling after executing LLVM compiled finally clauses.
390
391         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
392         bit, by passing all the registers as one argument.
393
394 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
395
396         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
397         to avoid an assert.
398
399 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
400
401         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
402
403         * aot-compiler.c aot-runtime.c: Fix LLVM support.
404
405         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
406         pad, branch to a new bblock instead.
407
408         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
409         orig_method.
410
411         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
412
413         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
414
415 2010-06-17  Geoff Norton  <gnorton@novell.com>
416
417         * mini-arm.h:
418         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
419         can be used by sgen.
420
421 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
422
423         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
424
425         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
426         fails.
427
428         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
429         the ip done by throw_exception (), it is not needed for corlib exceptions.
430
431 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
432
433         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
434         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
435         of size > 5 words. This support fast barriers for value types up to
436         256/512 bytes which     beyond that the copying itself is the major issue.
437
438         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
439         for gsharing, so use it.
440
441         This eliminate all calls to mono_value_copy from managed code in
442         gmcs, fsharp and ipy.
443
444         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
445
446         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
447         performance kept
448
449         * mini.c (mini_init): Register new icall.
450
451 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
452
453         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
454         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
455
456 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
457
458         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
459         value types as the overhead is huge. Manually expand it up to 5 words to
460         avoid code bloat.
461
462         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
463         is an exception that performance is dominated by mono_value_copy.
464
465         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
466
467 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
468
469         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
470         trampolines on x86, since those have their own cconv.
471
472         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
473         exception trampolines.
474
475         * tramp-x86.c: Add xdebug info for a few trampolines.
476
477         * mini-llvm.c: Set the name of the arguments.
478
479         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
480         using a block address if using the LLVM mono branch.
481
482         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
483         trampolines.
484
485 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
486
487         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
488
489         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
490
491         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
492
493         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
494
495         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
496         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
497         to identify the vtable slot address plus the method which needs to be compiled.
498
499         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
500         using llvm.
501
502         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
503         'this' is always passed as the first argument, before the vtype ret arg. This
504         simplifies get_this_arg_reg () and LLVM integration.
505
506         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
507         the latest changes.
508
509         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
510         these trampolines.
511
512         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
513
514         * mini-llvm.c: Fix compilation with llvm 2.6.
515
516         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
517
518         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
519         defined.
520
521         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
522         is always passed as the first argument, before the vtype ret arg. This simplifies
523         get_this_arg_reg () and LLVM integration.
524
525 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
526
527         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
528
529         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
530         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
531         translate into much nicer code.
532
533 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
534
535         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
536         parameter index information. Use this to simplify a lot of code.
537
538         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
539
540 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
541
542         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
543         to fix infinite generic recursion. Fixes #612702.
544
545 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
546
547         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
548         imt trampoline per imt slot when using LLVM.
549
550 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
551
552         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
553
554 2010-06-09  Levi Bard  <levi@unity3d.com>
555
556         * debugger-agent.c: Clear unloaded types on appdomain unload.
557
558 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
559
560         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
561         Fixes #612206.
562
563         * exceptions.cs: Add a test.
564
565 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
566
567         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
568
569         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
570
571         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
572         so it doesn't have to do it.
573
574         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
575         process does not mix with ours.
576
577         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
578         ones.
579
580         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
581         loads/stores which can throw exceptions inside clauses.
582
583 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
584
585         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
586         one ENDFINALLY.
587
588         * mini.c (mini_init): Register mono_resume_unwind as an icall.
589
590 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
591
592         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
593
594         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
595         locals.
596
597 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
598
599         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
600         appdomain.
601
602 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
603
604         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
605         Use a separate generic class init trampoline for llvm, since it needs a different
606         signature.
607
608         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
609         includes the location of this/rgctx.
610
611         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
612         branch.
613
614 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
615
616         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
617
618         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
619         clause.
620
621 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
622
623         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
624         says so.
625
626         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
627
628         * aot-compiler.c (patch_to_string): New debugging helper function.
629
630 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
631
632         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
633         trampoline.
634
635         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
636
637         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
638
639         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
640
641         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
642         clauses.
643
644         * mini.c (create_jit_info): Print EH clause info for LLVM too.
645
646 2010-05-28  Mark Probst  <mark.probst@gmail.com>
647
648         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
649         cpobj with reference types.
650
651 2010-05-28  Mark Probst  <mark.probst@gmail.com>
652
653         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
654         write barrier for reference types.
655
656 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
657
658         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
659         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
660
661 2010-05-31  Martin Baulig  <martin@ximian.com>
662
663         Fix #608271.
664
665         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
666         clear_breakpoint() on all breakpoint events and remove them from the list.
667
668 2010-05-27  Martin Baulig  <martin@ximian.com>
669
670         Fix #605698.
671
672         * debugger-agent.c (method_commands, type_commands): Temporarily
673         set the appdomain while executing this method; do all metadata
674         calls in the debuggee's appdomain where user assemblies are loaded.
675
676 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
677
678         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
679
680 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
681
682         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
683
684 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
685
686         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
687         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
688         be referenced even after the header is freed.
689
690         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
691         section.
692
693 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
694
695 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
696
697         * genmdesc.c (main): Fixing the detection of the nacl switch.
698
699         Code is contributed under MIT/X11 license.
700
701 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
702
703         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
704
705         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
706
707         * mini.h (LLVM_CHECK_VERSION): New helper macro.
708
709 2010-05-25  Miguel de Icaza  <miguel@novell.com>
710
711         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
712         the Perl program
713
714         * genmdesc.c: Added support for nacl: key on the machine
715         description files to support the extra space required by Google
716         Native Client.
717
718 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
719
720         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
721
722 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
723
724         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
725         mono_runtime_class_init_full ().
726         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
727
728 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
729
730         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
731
732 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
733
734         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
735         two are not the same on ilp32.
736
737 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
738
739         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
740         added by mistake.
741
742         * mini-ppc.c: Fix the DISABLE_JIT build.
743
744 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
745
746         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
747         (make_writable): Remove this unused function.
748
749 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
750
751         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
752         structure. Make the labels to plt entries local symbols instead of assembler local
753         labels, since tha latter causes problems for the iphone linker.
754
755 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
756
757         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
758
759 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
760
761         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
762         (ppc_patch_full): Ditto.
763
764         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
765
766         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
767         if gshared is enabled, to avoid asserts in the trampoline code.
768
769         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
770         on ia64.
771
772 2010-05-15  Geoff Norton  <gnorton@novell.com>
773
774         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
775         xdebug mode.
776
777 2010-05-14  Geoff Norton  <gnorton@novell.com>
778
779         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
780         misaligned stack on darwin.
781
782 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
783
784         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
785         arm.
786
787 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
788
789         * xdebug.c: Fix ARM support.
790
791 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
792
793         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
794         and do most of the work on the normal stack.
795         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
796
797 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
798
799         * aot-compiler.c: Put non-code data into the .rodata section on linux.
800
801 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
802
803         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
804
805 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
806
807         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
808         and do most of the work on the normal stack.
809
810 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
811
812         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
813         and do most of the work on the normal stack even if sigaltstack is disabled.
814
815 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
816
817         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
818         UCONTEXT_REG_ constants are available on linux as well.
819         (mono_arch_monoctx_to_sigctx): Ditto.
820         (mono_arch_ip_from_context): Ditto.
821
822 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
823
824         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
825         other domains.
826
827 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
828
829         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
830         no longer needed.
831
832 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
833
834         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
835         if a breakpoint cannot be inserted.
836
837 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
838
839         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
840
841 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
842
843         * debugger-agent.c (frame_commands): Return an error instead of asserting if
844         no JIT info is found for the method.
845
846 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
847
848         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
849         in debug printf.
850
851 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
852
853         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
854         a list of arch specific trampolines.
855
856         * aot-compiler.c (emit_trampolines): Use it.
857
858 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
859
860         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
861         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
862         get rid of the _full from their name.
863
864 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
865
866         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
867         get_nullified_class_init_trampoline to remove some code duplication.
868
869 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
870
871         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
872         attach.
873
874 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
875
876         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
877
878         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
879
880         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
881         there is no need to jump through the first plt entry.
882
883         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
884
885         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
886         arch-specific function.
887         (mono_aot_get_plt_info_offset): Ditto.
888
889         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
890         mono_arch_init () to register jit icalls called from full-aot trampolines.
891         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
892         to mini-<ARCH>.c.
893
894         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
895         the specialized throw corlib exception trampoline, use a variant of the normal
896         trampoline along with a new C function which does the call to
897         mono_exception_from_token (), just like on x86.
898
899 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
900
901         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
902         Reorganize the full aot trampoline creation functions, instead of taking a bunch
903         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
904         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
905         creation functions on architectures which have the full-aot ones.
906
907 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
908
909         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
910
911 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
912
913         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
914         explicitly, this seems to be required by some gcc versions at -O2.
915
916         * mini-arm.c: Ditto.
917
918 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
919
920         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
921         has_target delegate invokes.
922
923 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
924
925         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
926         info fields.
927
928         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
929         add patches/unwind info arguments, move to mini.c.
930
931         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
932
933 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
934
935         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
936         command which returns full path names.
937
938 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
939
940         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
941         code_size output variable.
942
943         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
944         mono_get_lmf_addr.
945         
946 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
947
948         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
949         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
950         (mono_arch_cpu_enumerate_simd_versions): Ditto.
951
952 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
953
954         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
955         apple assembler.
956
957 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
958
959         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
960
961 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
962
963         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
964
965 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
966
967         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
968
969 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
970
971         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
972         line number support works with eglib.
973
974 2010-04-27  Miguel de Icaza  <miguel@novell.com>
975
976         * driver.c, mini.c: Since linking with LLVM makes the default Mono
977         dirty an extra 70kb pages on startup we are now going to choose a
978         different strategy: ship mono and mono-llvm binaries, with the
979         second being the one that links with LLVM and defaults to LLVM
980         being enabled.
981
982 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
983
984         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
985         Implement full-aot support on x86.
986
987         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
988         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
989         the first register returned by get_global_int_regs ().
990
991         * cpu-x86.md: Fix the length of insertx_u1_slow.
992
993         * iltests.il.in: Disable tail call tests when running with full-aot.
994
995 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
996
997         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
998
999 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1000
1001         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
1002         in the initializer, because it's non-constant.
1003
1004 2010-04-23  Miguel de Icaza  <miguel@novell.com>
1005
1006         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
1007         of LLVM on by default.   Used for buildbots and other setups.
1008
1009 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
1010
1011         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
1012
1013 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
1014
1015         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
1016         initonly static fields when using moving GC.
1017
1018         Contributed under MIT/X11 license.
1019
1020 2010-04-23  Geoff Norton  <gnorton@novell.com>
1021
1022         * mini-amd64.h: Darwin x86_64 support.
1023
1024 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1025
1026         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1027
1028 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1029
1030         * exceptions-arm.c: Add Android support for sigcontext structure.
1031
1032 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1035         wrappers correctly now that their wrapper info is NULL.
1036
1037 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1038
1039         * mini.c (mono_jit_compile_method_inner): Avoid calling
1040         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1041
1042 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1043
1044         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1045         so the latter can be #ifndef DISABLE_JIT-ed.
1046
1047         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1048
1049 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1050
1051         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1052
1053 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1056         stack.
1057
1058 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1061         calling mono_class_num_methods (). Fixes #592244.
1062
1063 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1066
1067         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1068
1069 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1070
1071         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1072         version.
1073         * (handle_alloc): Ditto.
1074         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1075         change, its not needed anymore.
1076
1077 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1078
1079         * mini-posix.c (sigusr1_signal_handler): Fix build on
1080         non x86/amd64 systems.
1081
1082 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1085         calls where the constrained class needs a context. Fixes #595863.
1086
1087         * iltests.il.in: Add a test.
1088
1089 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1092         2.6/SVN seems to have broken support for them.
1093
1094 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * mini-llvm.c: Fix support for LLVM 2.6.
1097
1098 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1101         MonoInternalThread belonging to the thread.
1102
1103 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1104
1105         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1106         unsafe optimization that will remove bound checks.
1107
1108 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1109
1110         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1111         CompareExchange not to be inlined for I8.
1112
1113         Contributed under MIT/X11 license.
1114
1115 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1116
1117         * array.cs: Add tests for cast between primitive array types.
1118
1119 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1120
1121         * Makefile.am: create a convenience library for moon to link with
1122
1123 2010-04-07 Paolo Molaro <lupus@ximian.com>
1124
1125         * method-to-ir.c: optimize array accesses from generic interfaces.
1126
1127 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1128
1129         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1130
1131 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1132
1133         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1134         of marshalbyref classes.
1135
1136         Fixes #515884.
1137
1138 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1139
1140         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1141         information.
1142
1143         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1144         information.
1145
1146         * mini.h: Increase AOT version.
1147
1148 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1149
1150         * mini-x86.h: Only enable soft debugger when using sigaction or on
1151         Windows. Fixes build on Haiku (lacks siginfo_t).
1152
1153         Code is contributed under MIT/X11 license.
1154
1155 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1156
1157         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1158         BeOS-style signal handlers.
1159
1160         Code is contributed under MIT/X11 license.
1161         
1162 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1165
1166 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1167
1168         * mini-exceptions.c: Fix win32 build.
1169
1170 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1171
1172         * mini.c, driver.c: Call mono_gc_base_init() before
1173         mono_debug_init().
1174
1175 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1176
1177         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1178         call_method]): Delegate the actual work in security-core-clr.c
1179         to ease code sharing.
1180
1181 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1184         float conv.ovf.un opcodes are encountered, instead of asserting later.
1185         Fixes #566296.
1186
1187 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1190
1191         * iltests.il.in: Add a test.
1192
1193 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1194
1195         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1196         large. Fixes #567040.
1197
1198         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1199
1200 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1203         #592711.
1204
1205 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1206
1207         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1208         mono_create_handler_block_trampoline with the proper #ifdef so that it
1209         compiles on amd64.
1210
1211 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1212
1213         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1214         allows to select if it's new or old context that is passed to 
1215         the callback.
1216
1217         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1218         case when executing a guarded handler from the EH machinery.
1219
1220         * mini-exceptions.c (mono_install_handler_block_guard): New function
1221         responsible for checking for handler blocks, installing the guard and
1222         clearing abort state.
1223
1224         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1225         to check for handler blocks and skip interruption logic if one was found.
1226
1227         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1228         by the handler block guard trampoline. Resumes interruption by raising the
1229         pending ThreadAbortException.
1230
1231         * mini.c (create_jit_info): Calculate the end address of a finally block.
1232
1233         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1234         of a finally block to a specified address and return the old one.
1235
1236         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1237         trampoline patches the original return address and calls the trampoline function.
1238
1239 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1242
1243         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1244         does the patching if the callee is in the same domain.
1245
1246         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1247         of mono_arch_patch_plt_entry ().
1248
1249 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1250
1251         * mini.c (create_jit_info): Fix try block hole length encoding.
1252
1253 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1254
1255         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1256         duplicate information and print offsets instead of absolute addresses.
1257
1258 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1259
1260         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1261         event is sent. Fixes #591733.
1262
1263 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1264
1265         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1266         OpenBSD.
1267
1268 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1271         thread_to_tls hash table.
1272
1273         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1274         section. Fixes #591000.
1275
1276 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1277
1278         * Makefile.am (version.h): Check for pure .git directory only,
1279         fixes SVN revision when using git without git-svn.
1280
1281         Contributed under MIT/X11 license.
1282
1283 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1286
1287 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1288
1289         * basic-simd.cs: Test for vector x scalar binary operators.
1290
1291 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1292
1293         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1294         intrinsics with expanded scalar arguments.
1295
1296 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1297
1298         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1299         don't have an exception class, so don't decode it. This would crash
1300         with filter clauses.
1301
1302 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1303
1304         Make sure that trunk builds with DISABLE_JIT, an update to the
1305         PlayStation 3 port.
1306         
1307         * mini.c (mini_get_shared_method): this code seems to be necessary
1308         regardless of whether DISABLE_JIT has been defined.
1309
1310         (mono_jit_compile_method_inner): it seems that this method is
1311         required even in full AOT mode, so ifdef out only the pieces that
1312         try to genrate code (the body of code that applies patches to the
1313         code).  
1314
1315         (mini_method_compile): do not compile when using DISABLE_JIT.
1316
1317         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1318         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1319         compile when DISABLE_JIT is set.
1320
1321 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1322
1323         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1324         arch really supports it.
1325
1326 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1327
1328         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1329
1330 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1331
1332         * exceptions-s390x.c: Add support for
1333         mono_arch_get_throw_corlib_exception and fix throw by name.
1334
1335         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1336         logic (especially for varargs); Correct localloc sizing; Add
1337         mono_arch_get_this_arg_from_call and
1338         mono_arch_get_this_arg_from_call.
1339
1340         * mini-s390x.h: Add support for facility list extraction;
1341         Correct/update MONO_ARCH_xxx settings.
1342
1343         * mini-s390.c: Minor corrections to instruction output for
1344         varargs. No IMT implementation - I think it's time to deprecate
1345         s390 and just leave s390x.
1346
1347         * tramp-s390x.c: Correct creation of trampoline instruction
1348
1349
1350         * cpu-s390x.md: Update some instruction lengths
1351
1352 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1355         can be hit with partial sharing.
1356
1357         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1358         in non-shared classes correctly.
1359         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1360         Turn on partial sharing.
1361
1362 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1363
1364         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1365         by mistake.
1366
1367 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1370         mono_method_signature ().
1371
1372         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1373
1374         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1375         error checking, so later calls do not need error checking.
1376
1377 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1378
1379         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1380
1381         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1382
1383 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1384
1385         * mini-exceptions.c (mono_handle_exception_internal): Don't
1386         check try_end for archs different than s390. 
1387
1388         * mini.c (create_jit_info): Don't crash if the finallt block is the
1389         last one.
1390
1391 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1392
1393         * driver.c (mono_main): Don't free global codeman under linux since
1394         glic now peeks at code on stack for more archs than just amd64.
1395
1396 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1397
1398         * mini.c, method-to-ir.c: changes to support compressed interface
1399         bitmaps.
1400
1401 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1402
1403         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1404         Use sigaction on OpenBSD too.
1405
1406 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1407
1408         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1409
1410 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1411
1412         * debugger-agent.c: #include sys/select.h for fd_set.
1413
1414         Code is contributed under MIT/X11 license.
1415
1416 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1417
1418         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1419         (openbsd+amd64 ?).
1420
1421 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1422
1423         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1424         some large methods with lots of exception handlers. Fixes #440924.
1425
1426 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1427
1428         * method-to-ir.c: remove code duplication for interface checks.
1429
1430 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1431
1432         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1433         (assembly_unload): Clear all event requests referencing the to-be unloaded
1434         assembly.
1435
1436
1437 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1438
1439         * mini.h, mini-exceptions.c: restore the state of the stack
1440         guard page permissions.
1441
1442 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1443
1444         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1445         call site patching code, it doesn't appear to be needed.
1446
1447 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1448
1449         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1450         sharing generic methods whose type arguments are a mix of reference and
1451         non-reference types. Not yet turned on.
1452
1453         * mini.c (mini_get_shared_method): New helper function to return
1454         the method which will be compiled/registered in the JIT tables when doing
1455         generic sharing.
1456         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1457         use mini_get_shared_method ().
1458
1459         * mini.c (mini_method_compile): Register the same method which is compiled when
1460         doing generic sharing.
1461
1462         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1463
1464         * generics.cs: Add partial sharing tests.
1465
1466 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1467
1468         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1469                    Add an enum value that or's all possable values together. Add an enum value
1470                    that marks the end of the used bit indexes.
1471
1472         * mini-amd64.c : Make changes to match the changes in mini.h 
1473
1474         * mini-x86.c : Make changes to match the changes in mini.h
1475
1476         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1477                    simd_version to support more simd versions. Changed the name of
1478                    simd_version to simd_version_flags to make it more intuitive that
1479                    it now contains bit flags. Reordered the *_intrinsics arrays to
1480                    match the changes above. Changed emit_intrinsics() to use the new
1481                    setup mentioned above.
1482
1483         Code is contributed under MIT/X11 license.
1484
1485 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1486
1487         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1488         remaining archs. Alpha and hppa maintainers, please stand up.
1489
1490 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1491
1492         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1493         is needed even when fail_tramp!=NULL.
1494
1495 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1496
1497         * debugger-agent.c (insert_breakpoint): Write a log message.
1498
1499 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1500
1501         * iltests.il.in: Add a few tests for LEAVE going over multiple
1502         finally clauses.
1503
1504 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1505
1506          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1507
1508 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1509
1510         * mini.h (MonoBasicBlock): Add native_length field.
1511         * mini.h (MonoCompile): Add try_block_holes field.
1512         * mini.h (MonoInst): Add exception_clause pointer to
1513         the data union.
1514
1515         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1516         * mini.c (mono_cfg_add_try_hole): New function to register possible
1517         holes in try blocks.
1518         * mini.c (create_jit_info): Fill in the holes information.
1519
1520         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1521         by a try block.
1522
1523         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1524
1525 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1526
1527         * jit-icalls.c: adjusted for the array API changes.
1528
1529 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1532
1533 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1534
1535         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1536         the 'pending' flag. This fixes support for appdomains too.
1537
1538
1539 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1540
1541         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1542
1543 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1544
1545         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1546         when using LLVM, LLVM generates it itself when needed.
1547
1548         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1549
1550         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1551         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1552         OP_ANDNPS/OP_ANDNPD.
1553
1554 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1555
1556         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1557         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1558         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1559
1560 2010-03-11  Martin Baulig  <martin@ximian.com>
1561
1562         * debugger-agent.c (type_commands): Add NULL check to
1563         `CMD_TYPE_GET_SOURCE_FILES'.
1564
1565 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1566
1567         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1568
1569 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1572         #586664.
1573
1574         * iltests.il.in: Add a test.
1575
1576 2010-03-05  Martin Baulig  <martin@ximian.com>
1577
1578         Add support for aborting invocations.
1579
1580         * debugger-agent.c
1581         (InvokeData): Added `InvokeData *last_invoke'.
1582         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1583         added a new `invoke' field to keep the `InvokeData *' throughout
1584         the invocation.
1585         (ErrorCode): Added `ERR_NO_INVOCATION'.
1586         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1587         (mono_debugger_agent_handle_exception): Don't report any exception
1588         if an abort was requested.
1589         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1590         a thread abort if necessary.
1591         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1592
1593 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1594
1595         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1596         so we can release the whole list and not just the first one. Free
1597         it in more places as well.
1598
1599 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1600
1601         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1602
1603 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1604
1605         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1606
1607 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1608
1609         * driver.c: report also other misc build options.
1610
1611 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1612
1613         * method-to-ir.c: Generate better code for the NewObject
1614         intrinsic.
1615         
1616 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1619         is disabled. Fixes #582322.
1620
1621         * iltests.il.in: Add a test.
1622
1623 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1624
1625         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1626         the handling of obj->synchronization == null and owner != current thread to
1627         mono_monitor_exit ().
1628
1629         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1630
1631
1632 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1633
1634         * mini.c: change the way emulated opcode info is stored and save about
1635         4 KB of runtime memory.
1636
1637 2010-03-04  David S. Miller  <davem@davemloft.net>
1638
1639        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1640        that don't provide the siginfo in the second signal handler argument
1641        are buggy, and this has been fixed for years.
1642        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1643        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1644
1645 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * aot-runtime.c (find_symbol): Fix a leak.
1648         (decode_patch): Ditto.
1649
1650 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1653
1654 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1655
1656         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1657
1658 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1659
1660         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1661
1662 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1663
1664         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1665         to check for errors, it's enough to create the metadata open.
1666
1667         Fixes #562150
1668
1669 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1670
1671         * trace.c|h:
1672         * mini-exceptions.c: Add support for printing stack traces when handling
1673         exceptions, and when printing exceptions thrown while tracing also print
1674         the exception message.
1675
1676 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1677
1678         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1679         since the exclude token is a valid string character.
1680
1681 2010-03-02  Levi Bard  <levi@unity3d.com>
1682
1683         * debugger-agent.c: Invalidate thread stacks on domain unload.
1684
1685 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1686
1687         * method-to-ir.c: Emit dummy_use for stored reference after write
1688         barriers to make sure the object is pinned if the GC interrupts
1689         before the write barrier is done.
1690
1691 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1692
1693         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1694
1695 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1696
1697         * debugger-agent.c: Add a log message printing the protocol version.
1698
1699 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1700
1701         * debugger-agent.c: Add a new command to communicate the protocol version used
1702         by the client. This could be used to allow newer runtimes to communicate with
1703         older clients.
1704
1705 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1706
1707         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1708
1709 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1712         type.
1713
1714 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1715
1716         * mini-arm.c: make the arm cpu arch configurable with the
1717         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1718         Bug #584198.
1719
1720 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1721
1722         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1723         support for the perf tool on Linux.
1724
1725 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1726
1727         * method-to-ir.c: make string.InsertenalSetChar() specialization
1728         effective.
1729
1730 2010-03-01  Robert Jordan  <robertj@gmx.net>
1731
1732         * Makefile.am: fix the non-static build.
1733
1734 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1737         here.
1738
1739 2010-02-26  Robert Jordan  <robertj@gmx.net>
1740
1741         * tasklets.c (continuation_store): Return from an error condition
1742         immediately.
1743
1744 2010-02-26  Martin Baulig  <martin@ximian.com>
1745
1746         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1747
1748         * debug-mini.c
1749         (MonoDebuggerThreadInfo): Added `internal_flags'.
1750         (MonoDebuggerInternalThreadFlags): New enum.
1751         (_mono_debugger_throw_exception): Don't signal the debugger if a
1752         type abort was requested.
1753         (_mono_debugger_unhandled_exception): Likewise.
1754         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1755         (mono_debugger_runtime_invoke): If the debugger requested a thread
1756         abort during the invocation, reset it here.
1757
1758 2010-02-26  Martin Baulig  <martin@ximian.com>
1759
1760         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1761         instead of `MonoThread *'.
1762
1763 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1766         code offsets table, as it is mostly sorted.
1767
1768 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1771         Fixes #582991.
1772
1773 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1776
1777 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1778
1779         * Makefile.am: build the new ABI version of the libmono library.
1780         * debugger-agent.c, mini.c: fix warnings with the new API.
1781         * jit.h: don't depend on glib.h being included.
1782
1783 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1786
1787 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1788
1789         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1790         ThreadStatic variables.
1791
1792 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1795         data is not freed yet. Fixes #582460.
1796
1797 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1800         event requests. Bump protocol minor version.
1801
1802 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1803
1804         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1805
1806 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1807
1808         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1809         #581950.
1810
1811         * iltests.il.in: Add a test.
1812
1813 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1814
1815         * mini.c (inline_method): Check for loader errors.
1816
1817 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1818
1819         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1820         instead of mono_method_get_header as it doesn't decode locals
1821         so the called method can have unresolved dependencies that will only
1822         be satisfied after the current method is JIT'd.
1823
1824         Fixes #550968.
1825
1826 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * basic.cs (test_0_div_opt): Speed this up a bit.
1829
1830 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1831
1832         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1833
1834         * mini.c (mono_jit_create_remoting_trampoline): Call
1835         mono_create_specific_trampoline () instead of
1836         mono_arch_create_specific_trampoline ().
1837
1838         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1839
1840 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1843         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1844
1845         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1846
1847         * mini-amd64.c: Fix DISABLE_JIT support.
1848
1849 2010-02-20  Geoff Norton  <gnorton@novell.com>
1850
1851         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1852
1853 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1856         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1857         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1858         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1859         handle_exception.
1860
1861 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1864         edx/ecx too. This is needed to support OP_SEQ_POINT.
1865
1866 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1867
1868         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1869
1870         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1871
1872 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1875         LLVM+AOT+exceptions, not enabled yet.
1876
1877 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1880
1881 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1882
1883         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1884         xdebug info for these.
1885
1886         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1887         in a few places.
1888
1889         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1890         not used yet.
1891
1892 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1893
1894         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1895
1896 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1897
1898         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1899         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1900
1901         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1902         for mtouch.
1903
1904 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1905
1906         * debugger-agent.c: handle incomplete reads and EINTR in
1907         recv()/send(). This could have been causing random
1908         disconnections.
1909
1910 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1913         points.
1914
1915         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1916         so they have small offsets. Fixes #566311.
1917
1918 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1919
1920         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1921
1922 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1923
1924         * mini-amd64.c: Remove the special casing of byref in a few places now that
1925         mini_type_get_underlying_type () handles it.
1926
1927         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1928         by returning native int. Fixes #577984.
1929
1930 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1931
1932         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1933         a macro.
1934
1935         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1936         of putting the clause itself.
1937
1938         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1939
1940 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1943         might be unaligned.
1944
1945 2010-02-10  Geoff Norton  <gnorton@novell.com>
1946
1947         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1948
1949 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1952         llvm methods too.
1953
1954         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1955         it is not an LLVM generated symbol.
1956
1957         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1958
1959         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1960         implementation in gshared mode because it causes regressions.
1961
1962         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1963
1964         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1965         should be done by the caller.
1966
1967         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1968
1969         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1970
1971         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1972         since mono_jit_info_table_find () doesn't do it anymore.
1973
1974         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1975         instead of mono_jit_info_table_find ().
1976
1977 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1978
1979         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1980
1981         * aot-compiler.c (encode_method_ref): Update after the removal of
1982         mono_gc_get_managed_allocator_type ().
1983
1984         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1985         Fixes #564538.
1986
1987 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1990         generic params as well.
1991         (handle_isinst): Ditto.
1992
1993         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1994         instead of always calling an icall.
1995
1996         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1997         computing the size of the got.
1998
1999         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
2000         when using LLVM. Instead of emitting it as an LLVM method, emit it using
2001         the assembly directive '.set' so it points to the first LLVM emitted method.
2002
2003 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2004
2005         * mini.c (mini_method_verify): Report the method which failed to verify.
2006
2007 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2008
2009         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
2010         to avoid JIT'ng dead basic blocks. This is the same behavior as the
2011         runtime MS verifier.
2012
2013 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2014
2015         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
2016         #561962.
2017
2018 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2019
2020         * mini-llvm.c: Init the jit module only when first JITting.
2021
2022         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
2023
2024         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2025
2026         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2027         replaced with the real got.
2028
2029         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2030
2031         * image-writer.c: Reduce the amount of #ifdefs a bit.
2032
2033         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2034         llvm on darwin/arm.
2035
2036         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2037
2038         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2039         global.
2040
2041 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2042
2043         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2044         (mono_llvm_emit_method): Fix unaligned stores too.
2045
2046         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2047         so async stack walks don't crash.
2048
2049 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2052         was not patched if the callee needed an rgctx trampoline.
2053
2054 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2055
2056         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2057         vtable address in AOT code.
2058
2059 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2060
2061         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2062         MonoInst's.
2063
2064 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2065
2066         * genmdesc.pl: remove dependency on external cpp.
2067
2068 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2069
2070         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2071         using LLVM, its not needed, and abcrem can't handle it.
2072
2073 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2074
2075         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2076         it easier to group instructions and reduce duplication.
2077
2078 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * decompose.c: Move the array/soft float decompose routines here from
2081         method-to-ir.c.
2082
2083         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2084
2085 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2088         to tell LLVM that the got is constant, not used yet.
2089
2090         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2091
2092 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2095         managed wrappers.
2096
2097 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * aot-compiler.c (add_wrappers): Commit the hack which generates
2100         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2101         custom attribute.
2102
2103 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2104
2105         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2106         a fault, only used by the LLVM backend.
2107
2108         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2109         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2110
2111         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2112         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2113
2114         * mini-llvm.c: Only generate volatile loads from load instructions which have
2115         the MONO_INST_FAULT flag set.
2116
2117 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2118
2119         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2120         64 bit platforms.
2121
2122 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2125         sequence points. Fixes #571236.
2126
2127 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2128
2129         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2130         end of the appdomain unload process, after assemblies have been unloaded.
2131         Fixes #574842.
2132
2133 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2134
2135         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2136         works.
2137
2138         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2139         Fixes #573988.
2140
2141 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2142
2143         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2144
2145 2010-01-26  Geoff Norton  <gnorton@novell.com>
2146
2147         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2148         with struct marshalability.
2149
2150 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2151
2152         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2153         it supports class names as well.
2154
2155         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2156         needed by the GC map code.
2157
2158         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2159         flags if needed.
2160
2161         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2162         if cfg->init_ref_vars is set.
2163
2164         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2165         cfg->disable_initlocals_op_refs is set.
2166
2167         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2168         using liveness info if cfg->compute_precise_live_ranges is set.
2169
2170         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2171         volatile variables correctly. Add comments about the live ranges. Not enabled
2172         yet.
2173
2174 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2175
2176         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2177         0x2a into them in method prologs.
2178
2179         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2180
2181 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2184         classes, since llvm is compiled with -fno-rtti.
2185
2186         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2187
2188         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2189         llvm does not require it.
2190
2191         * aot-runtime.c (load_method): Print the full name of the last aot method.
2192
2193 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2196         thread has not fully started yet.
2197
2198 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2201
2202 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2203
2204         * driver.c: Do not abort if LLVM is not supported, print a
2205         warning and add the information to the Mono JIT information.
2206
2207 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2208
2209         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2210         using explicit null checks.
2211
2212 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2213
2214         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2215         related code.
2216
2217         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2218         () in one place.
2219         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2220         its no longer needed.
2221
2222         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2223
2224         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2225         define for platforms still using it (s390). Get rid of the
2226         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2227
2228         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2229         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2230
2231         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2232         the caller pushed the arguments.
2233
2234         * mini-llvm.c: Enable throwing exceptions on x86.
2235
2236         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2237         "Thread (nil) may have been prematurely finalized" messages if this is called
2238         on a thread not registered with the runtime.
2239
2240         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2241
2242 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2243
2244         * jit-icalls.c (mono_array_new_3): New jit icall.
2245
2246         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2247
2248         * arrays.cs: Add a test for 3 dimensional arrays.
2249
2250 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2253         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2254         used.
2255
2256         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2257         thrown on x86.
2258
2259         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2260
2261         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2262
2263         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2264
2265 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2266
2267         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2268           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2269
2270         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2271
2272         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2273
2274         Code is contributed under MIT/X11 license.
2275
2276 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2279
2280         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2281
2282         * mini.c (mini_method_compile): Set the new flag when running under the
2283         debugger.
2284
2285 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2288         a ref/noref value + a global pin flag, so parts of stack frames can still be
2289         precisely marked even if they include stuff which needs pinning. Improve logging.
2290         Fix many bugs. Not enabled yet.
2291
2292         * gc-test.cs: Add a few tests.
2293
2294         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2295         the normal -v options. Avoid propagating liveness information through bblocks
2296         which end with a NOT_REACHED opcode.
2297
2298         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2299         after cfg has been freed.
2300
2301 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2302
2303         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2304         if a clause is skipped because it uses the exception object, since it could
2305         have caught the exception.
2306
2307         * exceptions.cs: Add a test.
2308
2309 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2310
2311        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2312
2313         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2314         ICollection<T> wrappers.
2315
2316 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2319
2320 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2321
2322         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2323         NOMAP32BIT or optimize_for_xen is set.
2324
2325 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2326
2327         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2328         mono_metadata_str_hash () instead.
2329
2330 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2331
2332         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2333         sizeof (void*).
2334
2335         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2336
2337 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2340         flag is set.
2341
2342         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2343         throwing code correctly.
2344
2345         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2346
2347 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2350         ftnptrs created by us, handle RGCTX_FETCH correctly.
2351         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2352
2353         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2354         ftnptr added by mono_aot_get_named_code ().
2355
2356 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2357
2358         * mini-arm.c: Fix a few LLVM problems.
2359
2360         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2361
2362 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2363
2364         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2365         AOT compiling.
2366
2367 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2368
2369         * jit.h, method-to-ir.c: added ability to set the policy for
2370         inserting breakpoints from the break IL instruction or the
2371         Debugger.Break () API call.
2372
2373 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2376         assemblies need to be eagerly loaded.
2377
2378 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2379
2380         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2381
2382 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2383
2384         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2385         an argument which matches any exception.
2386
2387 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2390         optimization if the called method is gshared and marshalbyref, since gshared
2391         methods can' have wrappers. Fixes #569390.
2392
2393         * generics.cs: Add a test.
2394
2395 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2398         callable from gdb.
2399
2400 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2401
2402         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2403
2404 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2407         since it is not supported in win2000.
2408
2409 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2410
2411         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2412         error if loading an assembly fails.
2413         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2414
2415         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2416         if exists.
2417
2418         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2419         compiled methods.
2420
2421         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2422
2423         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2424         is not supported yet.
2425
2426         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2427
2428 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2429
2430         * method-to-ir.c: All types with variant arguments must fallback to the
2431         slow path. This makes cast of variant delegates work.
2432
2433         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2434         argument that is set to TRUE is the returned vtable slot is for a variant
2435         interface. Changed a g_print + g_assert_not_reached to a g_error.
2436
2437         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2438         a similar fashion of generic virtual methods.
2439
2440 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2441
2442         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2443         when cfg is null.
2444
2445         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2446         method using a variance aware function.
2447
2448         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2449
2450 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2451
2452         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2453         do an icall for now.
2454
2455 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2456
2457         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2458         If LLVM decides to set the code model to Large, reset it to Default.
2459
2460 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2463         stripped binaries as well.
2464
2465 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2466
2467         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2468         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2469
2470         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2471         reg.
2472
2473 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2476         separate function.
2477
2478         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2479         as the type info to llvm.eh.selector.
2480         (exception_cb): Use the type info for filling out some fields of
2481         MonoJitExceptionInfo like the flags and the exception class. This is needed
2482         because the LLVM produced exception handling clauses might not match the original
2483         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2484
2485         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2486         separate function. Add an extra argument which returns the type infos
2487         corresponding to the exception clauses.
2488
2489         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2490         exception handling clauses.
2491
2492 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2493
2494         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2495         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2496         to fix an AOT case.
2497
2498 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2499
2500         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2501         internal assembly.
2502
2503 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2506         llvm code.
2507
2508 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2509
2510         * mini.c (mini_method_compile): Verify the method before calling
2511         mono_compile_create_vars as this might crash since it uses method
2512         information.
2513
2514         Fixes #560196.
2515
2516 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2517
2518         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2519         one case if AOTing, since the class might not be a concrete class.
2520
2521 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2524         functions which are now defined in mempool-internals.h.
2525
2526         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2527
2528         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2529
2530 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2531
2532         * mini.c:
2533         * method-to.ir.c:
2534         * mini-*.c: Properly handle generic enums.
2535
2536         Fixes #566294
2537
2538 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2541         in a few more places.
2542
2543 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2546         nullable parameters. Fixes #567351.
2547
2548 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2549
2550         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2551
2552 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2555         mono_get_generic_context_from_code () call.
2556
2557         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2558
2559 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2560
2561         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2562         needed.
2563
2564 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2565
2566         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2567         mono_method_get_signature returns NULL. Fix #567084
2568
2569 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2572         instead of once for each module.
2573
2574 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2575
2576         * debugger-agent.c (ss_start): Implement step over for the last sequence
2577         point in methods.
2578
2579         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2580         have the STEP_LOC flag set.
2581
2582         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2583         fails. Fixes #566689.
2584
2585 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2586
2587         * mini.c (mono_add_seq_point): New helper function.
2588         (mono_save_seq_point_info): New function to save sequence point info, extracted
2589         from mini_method_compile ().
2590
2591         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2592
2593         * mini.h (MonoSeqPointInfo): New structure containing information about
2594         the sequence points of a JITted method.
2595         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2596         'bucket' field.
2597
2598         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2599         point information is stored, use a MonoSeqPointInfo structure instead of a
2600         GPtrArray. For each seq point, compute a list of successor seq points.
2601
2602         * debugger-agent.c: Use the successor list to implement step-over more
2603         efficiently: instead of single stepping until a different line/IL offset is
2604         reached, place breakpoints into all successor seq points.
2605
2606         * mini.h: Bump AOT file format version.
2607
2608 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2611
2612         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2613
2614 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2617         build.
2618
2619 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2620
2621         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2622         alloca as g_malloc is not signal safe.
2623
2624 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2625
2626         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2627         VALGRIND_DISCARD_TRANSLATIONS.
2628
2629         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2630         checks, they are no longer needed.
2631
2632         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2633         a function into a sigctx which can handle function pointers.
2634
2635         * mini-ppc.c: Implement soft debugger support on ppc64.
2636
2637         * mini-ppc.c: Implement soft debugger support.
2638
2639 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2642
2643 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2644
2645         * mini.c (mono_get_runtime_build_info): include Mono version in
2646         the returned value.
2647
2648         * driver.c (mono_main): VERSION is now included in the string
2649         returned from mono_get_runtime_build_info()
2650
2651 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2654         signatures. Fixes #565143.
2655
2656         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2657
2658 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2659
2660         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2661
2662 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2663
2664         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2665         making max stack 10x smaller.
2666
2667 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2668
2669         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2670
2671 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2672
2673         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2674
2675 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2676
2677         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2678         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2679
2680         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2681
2682         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2683
2684         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2685
2686         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2687         the compilation.
2688
2689 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2690
2691         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2692         raise an invalid program exception.   
2693
2694         For other opcodes that we might not handle use a g_warning and
2695         raise the exception.   Beats termination.
2696
2697         Fixes #561724
2698
2699 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2700
2701         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2702
2703         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2704         by merging the LLVM and !MAP_32BIT cases.
2705
2706 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2707
2708         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2709         sigctx being passed in, as we have no CONTEXT available in the APC.
2710
2711         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2712         for now.
2713
2714         Code contributed under MIT/X11 license.
2715
2716 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2717
2718         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2719         in the LLVM backend on AMD64.
2720
2721         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2722         FDE.
2723
2724         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2725
2726         * mini-llvm.c: Export mono_personality for AOT.
2727
2728         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2729
2730         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2731         implicit exception can occur.
2732
2733         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2734         OP_IMPLICIT_EXCEPTION instruction.
2735
2736         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2737
2738         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2739
2740         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2741         inside a protected block.
2742
2743         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2744         trampolines doesn't include the argument.
2745
2746         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2747         trampolines on amd64.
2748
2749         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2750         of RDI.
2751
2752         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2753         disabled for methods with clauses.
2754
2755         * mini-llvm.c: Enable support for catch clauses.
2756
2757         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2758         end of an LLVM compiled finally clause.
2759         (mono_handle_exception_internal): Save the exception handling state in TLS
2760         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2761         resume unwinding from that point.
2762
2763         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2764         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2765         to obtain the addresses of the exception handling regions.
2766
2767         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2768         finally clauses are supported.
2769
2770         * mini.c (mini_method_compile): Add support for LLVM code with exception
2771         handlers.
2772
2773 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2774
2775         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2776         proper size.
2777
2778 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2779
2780         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2781         as a primitive type.
2782
2783 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2784
2785         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2786         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2787         #564000.
2788
2789 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2790
2791         * method-to-ir.c (mini_redirect_call): do not redirect the
2792         InternalAllocateStr internal call if string profiling is enabled.
2793
2794 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2795
2796         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2797         generic methods.
2798
2799         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2800         unwind.h header file.
2801
2802         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2803         newer valgrind versions seems to handle this fine.
2804
2805 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2806
2807         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2808         on the debugger thread.
2809
2810 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2813
2814         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2815
2816         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2817
2818         * cpu-<ARCH>.md: Make call_handler clob:c.
2819
2820         * mini.c: Reenable SSA for methods with clauses.
2821
2822         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2823         as it causes failures on x86.
2824
2825 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2826
2827         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2828         returns NULL (e.g. a bad assembly).
2829
2830 2009-12-08  Geoff Norton  <gnorton@novell.com>
2831
2832         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2833         stepping out into native code.  There were issues with nested invokes
2834         like .cctors.
2835
2836 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2837
2838         * mini.c (mini_method_compile): Do the disable_llvm checks early
2839         and avoid the LLVM compile pass if the checks fail.
2840
2841         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2842
2843         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2844         LLVM optimizations don't try to remove them.
2845
2846         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2847         different file so the original remains.
2848
2849 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2850
2851         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2852
2853         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2854
2855         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2856         support for non-inline unwind descriptors.
2857
2858 2009-12-07  Geoff Norton  <gnorton@novell.com>
2859
2860         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2861         the interrupt_count slightly differently.  Native threads were never
2862         marked as resumed.
2863
2864 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2867         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2868         yet generate this info.
2869
2870         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2871
2872         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2873         client can distinguish between intptrs and longs.
2874
2875 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2876
2877         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2878         blob.
2879
2880         * aot-runtime.c (load_function): Update after the change above.
2881
2882         * mini.h: Bump AOT file format version.
2883
2884         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2885         if the delegate class is dynamic.
2886
2887         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2888         in gshared code too using the new rgctx info type
2889         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2890
2891 2009-12-04  Geoff Norton  <gnorton@novell.com>
2892
2893         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2894         we need to track the original suspend count so the thread properly
2895         wakes up in resume_thread.
2896
2897 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2900         code.
2901
2902         * generics.cs: Add a test.
2903
2904         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2905         is 0. Simplify a lot of code using this.
2906
2907         * mini-trampolines.c (mono_delegate_trampoline): Call
2908         mono_create_static_rgctx_trampoline () before saving the final address in
2909         delegate->method_code, to avoid calling it each time a delegate is first called.
2910
2911         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2912         which need static rgctx trampolines.
2913
2914         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2915         keyed on the method+addr pair, since addr could be either the method addr or
2916         an unbox trampoline in the AOT case. Fixes #560246.
2917
2918 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2921         place it was called before too.
2922
2923 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2926         if no security manager is present, to speed up the AOT case. Call
2927         mono_class_vtable () full with raise_on_error == TRUE instead.
2928
2929 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2930
2931         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2932         the local optimization passes can take its result into account. Fixes
2933         #559876.
2934
2935         * exceptions.cs: Add a test.
2936
2937 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2938
2939         This patch is contributed under the terms of the MIT/X11 license
2940
2941         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2942
2943 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2946
2947         * debugger-agent.c: Rework the handling of stack traces of running threads to
2948         avoid crashes if compute_frames () tries to walk the stack of running thread.
2949
2950         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2951
2952         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2953
2954         * mini.h (StackFrameInfo): Add an 'lmf' field.
2955
2956 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2957
2958         * debugger-agent.c (suspend_current): Always set really_suspended.
2959
2960         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2961
2962         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2963
2964 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2965
2966         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2967         really suspended.
2968
2969 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2970
2971         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2972
2973 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2974
2975         * mini-trampolines.c: Fix MSVC build.
2976
2977 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2978
2979         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2980
2981 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2982
2983         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2984         the instruction following an OP_FCOMPARE is optimized away.
2985
2986 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2987
2988         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2989         emit_autoreg () into this arch-specific function.
2990
2991         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2992         code, it is no longer needed.
2993
2994         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2995
2996         * mini.h: Bump AOT file format version.
2997
2998         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2999         using the sorted_code_offsets array, instead of reading it from the
3000         exception debug info.
3001         (load_method): Call mono_aot_find_jit_info instead of
3002         decode_exception_debug_info ().
3003
3004         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
3005         LLVM compiled as a flag.
3006
3007 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
3008
3009         * debugger-agent.c (resume_thread): Fix a warning.
3010
3011         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
3012         generated.
3013
3014 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
3017         contents to MonoAotFileInfo.
3018
3019 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3020
3021         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
3022         Put all binary data into a giant blob, similarly to the way .net assemblies
3023         store binary data. Emit offset tables in a compact form to reduce their size.
3024
3025         * mini.h: Bump AOT file format version.
3026
3027         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3028         places.
3029
3030         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3031         avoid linear searches at runtime.
3032
3033         * aot-runtime.c (find_symbol): Update this to use the hash.
3034
3035         * mini.h: Bump AOT file format version.
3036
3037 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3038
3039         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3040         container.
3041
3042         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3043         too.
3044
3045         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3046         the distribution of got slot types.
3047
3048         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3049
3050         * method-to-ir.c: Add support for generating explicit null checks.
3051
3052 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3053
3054         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3055         on a random thread if possible.
3056
3057         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3058         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3059         correctly.
3060
3061         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3062         regs. Pass the real size of the regs array to mono_unwind_frame ().
3063
3064         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3065         ones instead.
3066
3067 2009-11-24  Geoff Norton  <gnorton@novell.com>
3068
3069         * mini-darwin.c: Work around apple bug rdar://7209349  See
3070         http://openradar.appspot.com/7209349 for details.  Synopsis,
3071         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3072         never been initialized before.
3073
3074 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3075
3076         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3077
3078         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3079
3080 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3083         OP_SHL_IMM is not 32 bit.
3084
3085 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3086
3087         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3088
3089 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3090
3091         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3092         encountered.
3093
3094         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3095         > 0 since some threads can resume if their resume_count is > 0.
3096         (invoke_method): Avoid reading freed memory.
3097
3098         * debugger-agent.c (process_suspend): Extract the suspend code from
3099         process_single_step_inner () to a separate function. Rework the code to prevent
3100         races between this function and thread interrupts.
3101
3102         * debugger-agent.c (suspend_current): Check the resume_count field instead
3103         of resume_one so suspends+resumes during single threaded invokes work
3104         correctly.
3105
3106 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3107
3108         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3109         to make the generated code smaller.
3110
3111         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3112         sequence generated by recent LLVM versions.
3113
3114         * mini-llvm.c: Add support for a few simple cases which weren't supported
3115         before.
3116
3117         * mini-trampolines.c (mono_magic_trampoline): Don't call
3118         mono_arch_get_vcall_slot () when llvm is enabled.
3119
3120         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3121
3122         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3123         into a new function called common_call_trampoline () which is used by the
3124         llvm vcall trampoline as well.
3125
3126         * debugger-agent.c: Implement single threaded invokes.
3127
3128         * debugger-agent.c: Revert change which broke the agent on linux.
3129
3130         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3131         #557606.
3132
3133         * generics.cs: Add a test.
3134
3135 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * debugger-agent.c: Fix the cygwin build.
3138
3139 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3140
3141         * cprop.c: Remove this unused file.
3142
3143 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3144
3145         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3146         #557262.
3147
3148         * basic.cs: Add a test.
3149
3150 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3153         in one more place.
3154
3155 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3156
3157         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3158         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3159         it. Use this flag to control llvm related code paths instead of #ifdef
3160         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3161         AOT code.
3162
3163         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3164
3165         * mini.h: Bump AOT file format version.
3166
3167         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3168         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3169
3170         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3171         was used as an assembly filter.
3172
3173 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3174
3175         * unwind.c: Fix support for ppc.
3176
3177         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3178         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3179
3180 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3183         port.
3184         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3185         added by the ps3 changes.
3186
3187 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3188
3189         * mini-gc.c: Resurrect this, so at least it compiles.
3190
3191         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3192
3193 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3194
3195         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3196         create_event_list () so assembly filters can be used.
3197
3198         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3199         from the LMF.
3200
3201 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3202
3203         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3204         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3205         is disabled.
3206
3207         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3208         classes for char/bool too.
3209
3210         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3211
3212         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3213         used.
3214
3215         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3216         Fix warnings.
3217
3218 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3219
3220         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3221         
3222         Code contributed under MIT/X11 license.
3223
3224 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3225
3226         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3227         threads in native code work.
3228
3229         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3230         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3231         version.
3232
3233 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3234
3235         * debugger-agent.c: Implementation for Windows platform.
3236
3237         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3238         primitives. Use SEH to implement breakpoints and single stepping.
3239
3240         * mini-x86.h: Enable soft debugger on Windows.
3241
3242         Code contributed under MIT/X11 license.
3243
3244 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3245
3246         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3247         under XEN. Fixes #522894.
3248
3249         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3250
3251         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3252         interface calls in LLVM AOT code.
3253
3254         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3255         is found.
3256
3257         * mini-llvm.c: Add support for OP_VPHI.
3258
3259         * objects.cs: Add a test.
3260
3261 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3262
3263         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3264         this is called on the debugger thread.
3265
3266 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * mini-llvm.c: Add soft-float support.
3269
3270         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3271         FCALL which returns an R4.
3272
3273         * driver.c (mono_main): Add a missing '\n'.
3274
3275         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3276         platforms which doesn't support the LLVM IMT trampoline.
3277
3278 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3279
3280         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3281
3282         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3283
3284         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3285         virtual calls.
3286
3287         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3288
3289 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3290
3291         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3292         Instead of emitting a method_order table, sort the contents of the code_offsets
3293         table and do a binary search in the sorted table. The previous approach doesn't
3294         work with LLVM which emits methods in a arbitrary order.
3295
3296         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3297         in the .eh_frame section in ELF files.
3298
3299         * mini.h: Bump corlib file format version.
3300
3301         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3302
3303         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3304         LDMIA->LDM macro name change.
3305
3306 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3307
3308         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3309         x86.
3310
3311         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3312         SVN.
3313
3314         * aot-compiler.c: Ditto.
3315
3316         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3317         &align to mini_type_stack_size_full ().
3318
3319         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3320
3321         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3322
3323 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3324
3325         * mini-arm.c: Compute the stack space used by arguments using
3326         mini_type_stack_size_full ().
3327
3328 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3329
3330         * optflags-def.h: Remove dead TREEPROP optimization.
3331
3332 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3333
3334         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3335
3336         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3337
3338 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3339
3340         * driver.c (mono_jit_parse_options): New public API function to parse options
3341         as done by the runtime executable.
3342
3343         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3344         when handling named arguments.
3345
3346 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3347
3348         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3349         for passing small vtypes in registers, make the CallInfo structures more
3350         similar to the code on the other platforms.
3351
3352         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3353         the code in the prolog requires it.
3354
3355 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3358         (koush@koushikdutta.com).
3359
3360         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3361         where the thunk memory should be allocated from. Fixes appdomain unloading
3362         on arm.
3363
3364 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3365
3366         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3367         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3368
3369 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3370
3371         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3372         AOT, as it is not implemented yet.
3373
3374         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3375
3376 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3377
3378         * debugger-agent.c: Fix windows build.
3379
3380 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3383         after the client connects/disconnects.
3384
3385         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3386         when an exception of a given type is thrown.
3387
3388         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3389         only on an uncaught exception.
3390
3391         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3392
3393         * debugger-agent.c: Add a 'launch' option.
3394
3395 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * debugger-agent.c: Add a 'timeout' option.
3398
3399 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3400
3401         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3402         the JDWP agent.
3403
3404 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3405
3406         * debugger-agent.c (set_breakpoint): Emit a log message.
3407
3408 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3409
3410         * mini-arm.c: Fix the arm build.
3411
3412 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3413
3414         * aot-compiler.c: don't leak the value returned from
3415         mono_type_full_name().
3416
3417 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3418
3419         * debugger-agent.c: defer including mono-mutex.h until we know the
3420         agent is supported.
3421
3422 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3423
3424         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3425         of pthreads directly.
3426
3427         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3428         exception handlers. Pass info argument.
3429
3430         * mini.h: Adjust signatures of soft debugger functions to pass void*
3431         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3432
3433         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3434         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3435         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3436         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3437
3438         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3439
3440         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3441         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3442         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3443         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3444
3445         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3446
3447         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3448
3449         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3450
3451         * mono-semaphore.h: Skeleton implementation for Windows.
3452
3453         Code contributed under MIT/X11 license.
3454
3455 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3456
3457         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3458
3459         Code contributed under MIT/X11 license.
3460
3461 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3462
3463         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3464
3465         Code contributed under MIT/X11 license.
3466
3467 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3468
3469         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3470         debug info to 100 because 10 still slows down gdb too much.
3471
3472         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3473         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3474         them in the wrappers.
3475
3476 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3477
3478         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3479
3480         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3481
3482         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3483         function mono_aot_get_array_helper_from_wrapper ().
3484
3485         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3486         array helper methods.
3487
3488 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3489
3490         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3491         the value was loaded from memory.
3492
3493         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3494         the value was loader from there.
3495
3496         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3497         without constant swizzle.
3498
3499 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3500
3501         * mini-amd64.c: Put soft debugger functions behind a
3502         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3503
3504         * mini-amd64.h: disable the soft debugger in windows.
3505
3506         Code contributed under MIT/X11 license.
3507
3508 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3509
3510         * mini-x86.c: Put soft debugger functions behind a
3511         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3512
3513         Code contributed under MIT/X11 license.
3514
3515 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3516
3517         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3518         to mono_arch_find_jit_info_ext.
3519
3520         Code contributed under MIT/X11 license.
3521
3522 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3525
3526         * debugger-agent.c: Add support for filtering events by assemblies.
3527
3528         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3529         the agent is not enabled.
3530
3531 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3532
3533         * exceptions-x86.c: hopefully last change to fix the windows build.
3534         This one courtesy of Jonathan Chambers.
3535
3536 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3537
3538         * debugger-agent.c: remove unused function.
3539
3540 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3541
3542         * debugger-agent.c: add #ifdefs for a few header files.
3543         * mini-x86.h: disable the soft debugger in windows.
3544         Step 1 of 2 to make this compile on windows with gcc.
3545
3546 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3549         as it breaks the build.
3550
3551 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3552
3553         Merge the soft debugger branch.
3554
3555         * debugger-agent.h debugger-agent.c: New files containing the soft
3556         mode debugger module.
3557
3558         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3559         at the appropriate locations.
3560
3561         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3562         opcode.
3563
3564         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3565         enable/disable single stepping.
3566
3567         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3568         which returns all information in a StackFrameInfo structure, and can handle the
3569         LMF frames added by the debugger.
3570
3571         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3572         about an LMF frame.
3573
3574         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3575         walker function which works on a specific thread and passes a StackFrameInfo
3576         structure to its callback.
3577
3578         * mini.c (mini_init): Initialize the debugger agent.
3579
3580         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3581
3582         * mini-ops.h: Add OP_SEQ_POINT opcode.
3583
3584         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3585         arguments to the debugger agent.
3586
3587 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3588
3589         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3590         speed things up.
3591
3592         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3593
3594         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3595
3596         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3597
3598         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3599         if needed.
3600         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3601         sets the IMT argument and makes a virtual call.
3602
3603         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3604
3605 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3606
3607         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3608         the windows build.
3609
3610 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3611
3612         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3613         runtime. Fixes #551228.
3614
3615 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3616
3617         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3618
3619         * basic.cs: Add a test.
3620
3621         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3622         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3623         CONSTRAINED. Fixes #550964.
3624
3625         * generics.cs: Add a test.
3626
3627 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3628
3629         * mini-posix.c (add_signal_handler): Use
3630         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3631
3632 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3633
3634         Contributed under the terms of the MIT/X11 license by
3635         Jerry Maine <crashfourit@gail.com>.
3636
3637         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3638         sse4a for simd intrinsics.
3639
3640         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3641         sse4a for simd intrinsics.
3642
3643 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3644
3645         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3646         instead of inst_p1 which is not the same on ILP32 platforms.
3647
3648 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3651         not the mscorlib one before calling mono_get_lmf_addr.
3652
3653         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3654         of the ip to the LMF.
3655
3656         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3657         immediate in the op->op_imm optimization.
3658
3659         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3660         understand. VTypes now work, but are not abi compliant, as they are
3661         split into 4 byte parts instead of 8.
3662         (emit_memcpy): Fix the unrolled case to work on the PS3.
3663
3664         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3665
3666         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3667         the default when static linking.
3668
3669         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3670
3671         * aot-compiler.c: Add an autoreg option to automatically register
3672         statically linked aot modules using ELF .ctors.
3673
3674         * genmdesc.pl: Add __ppc64__ to allowed defines.
3675
3676 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3677
3678         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3679         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3680
3681 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3682
3683         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3684
3685 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3686
3687         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3688         which will contain the domain where the method was found.
3689
3690         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3691         mini_jit_info_table_find ().
3692
3693         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3694
3695         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3696
3697 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3698
3699         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3700         set, its not supported yet.
3701
3702 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3703
3704         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3705         iface wrapper is not found.
3706         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3707
3708 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3709
3710         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3711         which have a different name.
3712
3713         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3714         wrappers and Array.GetGenericValueImpl ().
3715
3716         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3717         because of the change above.
3718
3719         * generics.cs: Add a test for full aot + generic array ifaces.
3720
3721 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3722
3723         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3724         that hides the previous one.
3725
3726 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3727
3728         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3729         marshalled. Fixes #541623.
3730
3731 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3734
3735 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3736
3737         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3738
3739 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3740
3741         * mini-posix.c (sigprof_signal_handler):
3742         Implemented support for building stat call chans in different ways.
3743
3744 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3745
3746         * mini-exceptions.c (mono_find_jit_info):
3747         Also check that a jit info has been found (fixes a profiler crash).
3748
3749 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3750
3751         * mini.c (mono_codegen):
3752         Call mono_profiler_code_buffer_new with correct code address.
3753
3754 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * driver.c (mono_main): Change the date in the copyright.
3757
3758 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3759
3760         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3761         allocator in shared generic code for open classes, because we
3762         can't get those classes' vtables.  We need to make managed
3763         allocators not depend on the vtable at compile-time to solve this.
3764
3765 2009-10-13  Martin Baulig  <martin@ximian.com>
3766
3767         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3768         `const guint8 *trampoline' argument; send both the old and the new
3769         notification.
3770
3771 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3772
3773         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3774         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3775         (can_marshal_struct): Skip structures with auto layout.
3776
3777         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3778
3779 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3782         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3783         a variable to hold the stack slot used by the int<->float conversion opcodes.
3784
3785         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3786
3787 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3788
3789         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3790         when using full-aot.
3791
3792 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3793
3794         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3795         each instance of Comparer<T>.
3796
3797         * generics.cs: Add a new test.
3798
3799 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3800
3801         * driver.c (parse_debug_options): Add a 'gdb' option.
3802
3803         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3804
3805         * image-writer.c: Add support for emitting the image into a memory buffer.
3806
3807         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3808
3809         * aot-compiler.c: Add support for registering debug info with GDB using the
3810         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3811         MONO_XDEBUG to 'gdb'.
3812
3813 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3814
3815         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3816         gdb mode.
3817
3818 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3819
3820         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3821         can be used to set breakpoints in gdb.
3822
3823         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3824         segment to an absolute address.
3825
3826 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3827
3828         * method-to-ir.c: Use the managed array allocator method if
3829         available.
3830
3831 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3832
3833         * aot-compiler.c : Fix the MSVC builds
3834
3835         Code is contributed under MIT/X11 license.
3836
3837 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3838
3839         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3840         avoid registering 1 symbol file per method with gdb.
3841
3842 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3843
3844         * mini-sparc.c: Fix the handling of enums with base type long.
3845
3846         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3847
3848         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3849         instead of using type->data.klass as the later doesn't work with generics.
3850
3851 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3852
3853         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3854         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3855         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3856         works differently now and we don't handle it in the JIT anymore.
3857
3858         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3859         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3860         the Thread class split.
3861
3862 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * driver.c: Don't run tests with the obsolete treeprop optimization.
3865
3866         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3867         variable volatile. Fixes #541577.
3868
3869         * basic-calls.cs: Add a new test.
3870
3871         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3872
3873 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3874
3875         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3876         work/required with recent iphone sdk versions.
3877
3878         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3879         structures.
3880
3881         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3882         in the VCALL decomposition code.
3883
3884 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3885
3886         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3887
3888         * basic.cs: Add a test.
3889
3890         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3891         generic invokes.
3892
3893         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3894         searches all the domains of the current thread.
3895
3896         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3897
3898 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3899
3900         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3901         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3902
3903         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3904         for non-jit trampolines.
3905
3906         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3907
3908         * aot-compiler.c (add_wrappers): Ditto.
3909
3910         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3911         the size of the param area used by dyn_call to 6 which covers the majority of
3912         methods.
3913
3914         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3915
3916         * mini-arm.c: Implement support for passing/receiving
3917         longs and receiving floats in the dyn_call code.
3918
3919         * mini-amd64.c: Implement support for receiving vtypes in registers in
3920         the dyn_call code.
3921
3922         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3923         the dyn_call code.
3924
3925 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3926
3927         * mini-arm.c (get_call_info): Return more precise information in
3928         ArgInfo->regtype.
3929         (dyn_call_supported): Use the information in CallInfo.
3930
3931         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3932
3933         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3934         code.
3935
3936         * mini-arm.c: Update after the dyn_call api changes.
3937
3938         * mini.c (mini_create_jit_domain_info): Register a destructor function
3939         for the runtime_invoke_hash.
3940
3941         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3942         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3943         this function.
3944         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3945         (dyn_call_supported): Simplify this by using get_call_info ().
3946         (mono_arch_dyn_call_free): New destructor function.
3947
3948         * generics.cs: Remove a printf.
3949
3950         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3951
3952         * mini-arm.c: Add support for enum return values and passing a few arguments
3953         on the stack.
3954         
3955         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3956         dyn invoke.
3957
3958         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3959
3960         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3961         the dynamic invoke wrappers.
3962
3963         * mini-arm.c: Implement OP_DYN_CALL for arm.
3964
3965         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3966         supported by the dynamic runtime invoke wrapper.
3967
3968         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3969         runtime invoke wrapper.
3970
3971         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3972         if possible when running with full-aot.
3973
3974         * mini-ops.h: Add OP_DYN_CALL opcode.
3975
3976         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3977         with dynamic arguments lists similar to libffi.
3978
3979 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3980
3981         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3982         
3983         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3984         to NEWARR.
3985
3986         * iltests.il.in: Add a new test.
3987         
3988 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * aot-compiler.c (add_generic_instances): Add more instances of
3991         GenericEqualityComparer.
3992
3993 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3994
3995         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3996
3997 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3998
3999         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
4000         comments on some functions that now can fail.
4001
4002 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
4003
4004         * Makefile.am: Add Info.plist to EXTRA_DIST
4005
4006 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4007
4008         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
4009         static synchronized wrappers. Fixes #539500.
4010
4011 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
4012
4013         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
4014         properly.
4015
4016 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4017
4018         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
4019         lmf before calling filter clauses as well. Fixes #539550.
4020
4021         * exceptions.cs: Add a test.
4022         
4023 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * aot-compiler.c (add_generic_class): Add instances of
4026         Array.GetGenericValueImpl as well.
4027
4028         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4029         can be tested too.
4030
4031         * generics.cs: Add a fullaot linq test.
4032
4033 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4034
4035         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4036         reg r1 on arm.
4037
4038 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4039
4040         * mini-trampolines.c (mono_delegate_trampoline) : Call
4041           mono_cominterop_get_invoke if the delegate target object
4042           is a COM object.
4043
4044         Code is contributed under MIT/X11 license.
4045
4046 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4047
4048         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4049         internal call is defined outside platform code. Reduce code 
4050         duplication with existing [Method|Field]AccessException
4051
4052 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4053
4054         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4055         if the return value is a small struct passed on regs.
4056
4057 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4058
4059         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4060
4061         * mini-codegen.c: Enable the cpu description validation for arm.
4062
4063 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4064
4065         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4066         test which depends on structs to objects.cs.
4067         
4068         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4069         require object model related stuff working.
4070
4071         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4072
4073         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4074
4075         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4076         against the instruction metadata in mini-ops.h. amd64 only for now.
4077
4078         * mini-ops.h: Fix some instruction descriptions.
4079
4080         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4081         unused instructions.
4082
4083 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * exceptions.cs: Add a new test.
4086
4087 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4088
4089         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4090
4091 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4094         skip empty phi opcodes.
4095         
4096         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4097         correctly by zero extending after loads. Skip methods containing calls
4098         to the monitor enter/exit trampolines.
4099
4100         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4101         when calling mono_thread_force_interruption_checkpoint ().
4102
4103         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4104
4105         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4106         64 bit thunks.
4107         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4108
4109         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4110         bootstrap could run.
4111
4112 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4113
4114         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4115
4116 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4119         of the method to
4120         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4121         LLVM might be very short.
4122
4123         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4124         in OP_THROW/RETHROW.
4125
4126         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4127         alignment on osx.
4128
4129 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4130
4131         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4132         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4133         LLVM might be very short.
4134
4135 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4136
4137         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4138         the alignment for the value of sp.
4139
4140 2009-09-01  Geoff Norton  <gnorton@novell.com>
4141
4142         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4143         managed wrappers in full aot.
4144
4145 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4146
4147         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4148
4149 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4150
4151         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4152
4153 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4156
4157         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4158         saved info.
4159
4160         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4161
4162         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4163         depend on the info MonoMethodHeader which could be missing in IL stripped
4164         assemblies.
4165
4166 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4167
4168         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4169         they are only 4 byte aligned.
4170
4171 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4172
4173         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4174         was done previously, since using SP causes too many problems.
4175
4176         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4177         frames without a frame pointer works.
4178
4179         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4180         global register in methods with calls, since the calls can go through
4181         a static rgctx trampoline which doesn't save it.
4182
4183 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4186
4187 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4188
4189         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4190
4191 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4192
4193         * method-to-ir.c: Fix warnings for uninitialized variables.
4194
4195 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4196
4197         * mini-exceptions.c:
4198         * aot-compiler.c: Fix printf warnings.
4199
4200 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4201
4202         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4203         Add GetGenericValueImpl<string>.
4204         
4205         * aot-compiler.c (add_generic_instances): Add instances of
4206         GenericEqualityComparer<T> for primitive types. Only emit the array
4207         wrappers into the mscorlib image.
4208
4209 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4212         the methods_loaded array using amodule->info->nmethods.
4213
4214         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4215         (MONO_AOT_FILE_VERSION): Bump this.
4216
4217         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4218         to work.
4219
4220         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4221         MonoJitInfo doesn't belong to its methods aot image.
4222
4223 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4226
4227         * mini-arm.c: Fix warnings.
4228         
4229         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4230
4231         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4232         supports it.
4233
4234 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4235
4236         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4237         avoid clobbering IP.
4238
4239         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4240         hold the trampoline argument, so its initial value is available during
4241         debugging.
4242
4243 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4244
4245         * exceptions-arm.c:
4246         * exceptions-hppa.c:
4247         * mini.c:
4248         * exceptions-s390x.c:
4249         * exceptions-mips.c:
4250         * exceptions-ppc.c:
4251         * exceptions-sparc.c:
4252         * exceptions-alpha.c:
4253         * aot-runtime.c:
4254         * mini-trampolines.c:
4255         * exceptions-x86.c:
4256         * exceptions-s390.c: add and use #define's instead of sizeof()
4257         for MonoJitInfo and MonoJitInfoTable.
4258
4259 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4260
4261         * tramp-arm.c:
4262         * tramp-amd64.c:
4263         * tramp-ppc.c:
4264         * tramp-x86.c: use a #define instead of sizeof() for a few
4265         structures that use a zero-length array.
4266
4267 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4268
4269         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4270         case when the method is dynamic. Fixes #529238.
4271
4272 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4273
4274         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4275         of asserting when a method is JIT compiled in full-aot mode.
4276
4277 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4278         
4279         Contributed under the terms of the MIT/X11 license by
4280         Jerry Maine <crashfourit@gail.com>.
4281         
4282         * fixed wrong dates in changelog.
4283
4284 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4285         
4286         Contributed under the terms of the MIT/X11 license by
4287         Jerry Maine <crashfourit@gail.com>.
4288
4289         * basic-simd.cs: added test for packed double square root.
4290         * cpu-amd64.md: added opcode info for packed double square root.
4291         * cpu-x86.md: added opcode info for packed double square root.
4292         * mini-ops.h: added IR opcode for packed double square root.
4293         * mini-x86.c: added IR to native translation code for packed double square root.
4294         * mini-amd64.c: removed todo for packed double square root.
4295         * simd-intrinsics.c: added method to IR opcode converstion for
4296         packed double square root.
4297
4298 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4299
4300         Contributed under the terms of the MIT/X11 license by
4301         Jerry Maine <crashfourit@gail.com>.
4302
4303         * mini-amd64.c: Added a change to help tell the difference as 
4304         to what perpose the xmm register is being used--mainly to help
4305         with debuging.
4306         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4307         (one used for special cases) xmm registers for both fp
4308         and simd ops. Added define to turn on new feature in the regalloc
4309         that allows fp and simd ops to share the xmm regs happily.
4310         * codegen.c: Added code to detect for which perpose an xmm reg is
4311         being used (fp or simd) and to translate back and forth to the
4312         correct logical reg bank (fp or simd) for 'spill load's.
4313
4314 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4315
4316         Contributed under the terms of the MIT/X11 license by
4317         Jerry Maine <crashfourit@gail.com>.
4318
4319         * basic-simd.cs: Added tests for stressing the regalloc when running with
4320         16 simd regs and when simd and fp ops share the same reg bank.
4321
4322 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4323
4324         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4325         in shared generic code, we might have to look up the class in the
4326         RGCTX.  If we use the class directly, compute its GC descriptor.
4327
4328 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4329
4330         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4331
4332 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4333
4334         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4335         check for errors. Fixed the case when the class with the Main
4336         method is broken.
4337
4338 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4339
4340         Contributed under the terms of the MIT/X11 license by
4341         Jerry Maine <crashfourit@gail.com>.
4342
4343         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4344
4345 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4346
4347         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4348
4349 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4350
4351         * method-to-ir.c: Fix naming of stelem and ldelem.
4352
4353 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4354
4355         * driver.c (main_thread_handler): Check that the assembly loaded
4356         matches the filename when doing AOT.
4357
4358 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4359
4360         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4361         call it anymore.
4362
4363         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4364         utils/mono-sigcontext.h).
4365
4366         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4367         #ifdef.
4368
4369 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4370
4371         * mini.c (mono_codegen):
4372         Call profiler hook to keep track of method code buffers.
4373
4374 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4375
4376         * method-to-ir.c: Invoke write barriers for the
4377         Interlocked.(Compare)Exchange JIT intrinsics.
4378
4379 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4380
4381         * Makefile.am (version.h): Fix issues when built out of tree.
4382         Remove some redundant 'grep's piped through 'sed's.
4383
4384 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4385
4386         This patch is contributed under the terms of the MIT/X11 license
4387
4388         * mini-ppc.c (mono_arch_output_basic_block):
4389         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4390         for bits 32-47 with signed load/store diplacements for bits
4391         48-63.  Use prefered base/offset order for indexed form.
4392         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4393         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4394         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4395         OP_LOADI2_MEMBASE): Same.
4396         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4397         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4398         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4399         indexed form.
4400         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4401         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4402         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4403         OP_LOADI1_MEMINDEX): Same
4404         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4405         OP_STORER8_MEMINDEX): Same
4406         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4407         computations.
4408         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4409         for bits 32-47 with signed load/store diplacements for bits
4410         48-63.  Use prefered base/offset order for indexed form.
4411
4412 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4413
4414 This patch is contributed under the terms of the MIT/X11 license
4415
4416         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4417         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4418         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4419         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4420         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4421         cfg->stack_usage to avoid size warnings.
4422         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4423         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4424         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4425         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4426         to convert.
4427         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4428         after code varible is initialized.
4429         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4430         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4431         (mono_arch_emit_epilog): 
4432         Move Use ppc_load32 for cfg->stack_usage to avoid size
4433         warnings.
4434
4435 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4436
4437         * method-to-ir.c: The write barrier doesn't do the store anymore,
4438         so we have always to emit it.  Also, emit the wbarrier after the
4439         store.
4440
4441 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4442
4443         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4444         for argument count 3 too.
4445
4446 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4449         the caller handle the exceptions.
4450         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4451         method. Fixes #524498.
4452
4453 2009-07-22  Geoff Norton  <gnorton@novell.com>
4454
4455         * mini-exceptions.c: Fix build on ia64.
4456
4457 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4458
4459         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4460         barriers.
4461
4462 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4463
4464         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4465         code.
4466
4467 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4468
4469         * basic-simd.cs (Main): Pass args to the test driver.
4470
4471 2009-07-20  Geoff Norton  <gnorton@novell.com>
4472
4473         * mini-x86.h: Fix the x86 version guards to use Apple's
4474         properly defined macros.
4475
4476 2009-07-20  Geoff Norton  <gnorton@novell.com>
4477
4478         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4479         aligned access.
4480
4481 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4482
4483         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4484         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4485         the information which is needed for invokes, so only one locking+hash table
4486         lookup is needed.
4487
4488         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4489         
4490         * aot-compiler.c (add_generic_instances): Emit instances of 
4491         GenericComparer<T> for primitive types.
4492
4493 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4494
4495         * mini-posix.c: Fix linux build.
4496
4497 2009-07-19  Geoff Norton  <gnorton@novell.com>
4498
4499         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4500         mono_gdb_render_native_backtraces
4501         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4502         so we implement the sane semantics to the runtime here
4503         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4504         so we need to call it differently (mono_gdb_render_native_backtraces)
4505         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4506         here for default implementations.
4507         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4508         support Apple's weird syscall (SYS_fork) implementation and not busy
4509         loop in abort() on native crashes on OSX anymore.
4510
4511 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4512
4513         * aot-runtime.c (load_method): Change the handling of the
4514         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4515         are used.
4516
4517         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4518
4519 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4520
4521         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4522         seems to break the aot tests.
4523         
4524         * mini.c (mono_patch_info_equal): Fix the handling of 
4525         MONO_PATCH_INFO_RGCTX_FETCH.
4526
4527 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4530
4531         * mini.c (mono_patch_info_hash): Fix the handling of 
4532         MONO_PATCH_INFO_INTERNAL_METHOD.
4533         (mono_patch_info_equal): Ditto.
4534
4535 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4536
4537         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4538         in a few places.
4539         
4540         * mini-llvm.c: Add some infrastructure for AOT support.
4541
4542 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4543
4544         * mini-llvm-cpp.c: Update to the latest llvm api.
4545         
4546         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4547         option to false to prevent llvm from installing signal handlers which
4548         trip up the gc.
4549         
4550 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4551
4552         * cpu-x86.md:
4553         * cpu-amd64.md: Revert previous change as those instructions
4554         take 2 separate arguments. Remember to read the arch docs more
4555         carefully next time.
4556
4557 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4558
4559         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4560
4561 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4562
4563         * mini-ppc.c: exploit multiple load/store units if available (rest of
4564         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4565         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4566
4567 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4568
4569         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4570         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4571
4572 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4573
4574         * cpu-x86.md: Fix missing clobbering from trancendental simd
4575         ops.
4576
4577         * cpu-amd64.md: Same.
4578
4579 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4580
4581         Contributed under the terms of the MIT/X11 license by
4582         Jerry Maine <crashfourit@gail.com>.
4583
4584         * basic-simd.cs: Added tests for single and doulble indexers.
4585
4586         * cpu-amd64.md: Added simd opcode information.
4587
4588         * mini-amd64.c: Added IR to native simd generation code.
4589         Added simd register names and function that returns them.
4590
4591         * mini-amd64.h: Added marcos to turn on simd code compilation in
4592         amd64. Added max simd register count marco. Added caller/callee
4593         register mask marcos. Added marcos to use simd register bank.
4594
4595         * mini.h: Added helper marco for shufling dwords and simple
4596         floats.
4597
4598 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4599
4600         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4601
4602         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4603
4604         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4605         the length of the native code as well.
4606
4607         * basic-simd.cs: Add a test for #521662.
4608
4609 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4610
4611         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4612
4613 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4614
4615         * mini.c: Register function for getting the IP from a signal
4616         context with metadata.
4617
4618 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4619
4620         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4621         call a generic class init trampoline if needed. Fixes #519336.
4622
4623         * generics.cs: Add a test.
4624         
4625 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4626
4627         * method-to-ir.c: When doing a call which might be remote from
4628         shared generic code to other shared code with open type arguments,
4629         get the remoting invoke wrapper from the RGCTX and do an indirect
4630         call to it.
4631
4632 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4633
4634         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4635         after the unbox trampoline in the full-aot case.
4636
4637 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4638         
4639         * mini.c: Move initialization of jit_mutex before debugger initialization
4640         
4641         to avoid crashes.
4642         
4643         
4644         * Info.plist: added Info.plist and link flag to enable the mono executable
4645         to access other processes. Requires codesigning of the executable to work.
4646         
4647         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4648         
4649         compile on OS X.
4650         
4651
4652 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4653
4654         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4655
4656 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4657
4658         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4659         when the generic instance is an instantiation of a subclass of the
4660         methods class. Fixes #517166.
4661
4662 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4663
4664         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4665         code.
4666
4667         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4668         AOTed code.
4669
4670         * CMakeLists.txt: Add minimal support for installation.
4671
4672 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4673
4674         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4675         determine whenever a method is directly callable to a separate function.
4676
4677         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4678         needed ones as a result of the previous change.
4679
4680         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4681         type of register arrays.
4682
4683         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4684         type of register arrays.
4685
4686 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4687         
4688         Contributed under the terms of the MIT/X11 license by
4689         Jerry Maine <crashfourit@gail.com>.
4690
4691         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4692
4693 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4694
4695         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4696
4697 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4698
4699         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4700         dump of structure return value. Fix some formatting.
4701         * cpu-s390x.md: Fix lengths of instruction sequences.
4702         * mini-s390.c: Minor formatting changes.
4703
4704 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4705
4706         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4707         Use sigaction on freebsd as well.
4708
4709 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4710
4711         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4712         uses #ifdef on it.
4713         
4714         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4715
4716 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4717
4718         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4719
4720 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4721
4722         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4723
4724 2009-06-20  Martin Baulig  <martin@ximian.com>
4725
4726         * debug-mini.c
4727         (MonoDebuggerThreadFlags): New enum typedef.
4728         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4729         (mono_debugger_thread_created): Added `gpointer func' argument;
4730         initialize the new `thread_flags' field.
4731
4732 2009-06-18  Martin Baulig  <martin@ximian.com>
4733
4734         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4735         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4736
4737         * debug-debugger.c
4738         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4739         flag in `MONO_DEBUGGER__info.runtime_info'.
4740
4741         * driver.c
4742         (mono_main): Call mini_debugger_set_attach_ok() if generics
4743         sharing is disabled.
4744
4745 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4746
4747         * aot-compiler.c (add_wrappers): Fix a warning.
4748
4749         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4750         the ppc load/store macro changes.
4751
4752 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4753
4754         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4755
4756         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4757         not just the got symbol.
4758
4759         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4760         on ppc.
4761
4762         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4763         ppc.
4764         
4765         * aot-compiler.c: Remove some fixmes.
4766
4767         * driver.c (mono_main): Print a helpful message when cross-compiling.
4768
4769         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4770
4771         * method-to-ir.c (initialize_array_data): Do the optimization if the
4772         target byte order is little endian, instead of the host byte order.
4773
4774         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4775         wrappers into the mscorlib image, Emit a unique plt symbol for each
4776         image, emit symbols for plt entries.
4777
4778         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4779         a .size directive.
4780         
4781 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * aot-compiler.c (add_wrappers): Avoid calling 
4784         mono_marshal_get_type_info () since it can assert for some types.
4785
4786         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4787         ldtoken are used inside wrappers.
4788
4789         * helpers.c: Add support for prefixing tools with the arch name.
4790
4791         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4792         quantities when using ilp32.
4793
4794         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4795         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4796
4797         * image-writer.c: Use .long on ilp32.
4798
4799         * aot-compiler.c: Use 32 bit loads on ilp32.
4800         
4801 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4802
4803         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4804
4805         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4806
4807         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4808
4809         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4810         second got slot of every aot image.
4811         
4812         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4813         aot on platforms with function pointers.
4814
4815         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4816         support for aot/full aot on ppc/ppc64.
4817         
4818         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4819         arguments which are needed on ppc.
4820
4821         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4822         argument.
4823
4824         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4825         
4826         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4827
4828         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4829
4830         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4831
4832         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4833
4834 2009-06-17  Geoff Norton  <gnorton@novell.com>
4835
4836         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4837
4838 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4839
4840         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4841         to control whenever the dwarf writer is in xdebug or aot mode.
4842         (emit_class_dwarf_info): Use a separate abbrev for structures without
4843         children.
4844
4845         * aot-compiler.c: Pass the appending parameter to 
4846         mono_dwarf_writer_create ().
4847
4848         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4849         falls through to its next bblock. Fixes #513931.
4850
4851         * iltests.il: Add a test.
4852
4853         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4854         infor even if emit_line is FALSE, as the apple linker seems to require it.
4855
4856         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4857
4858         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4859         gcc does.
4860         (emit_fde): Ditto.
4861
4862 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4863
4864         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4865         mips build.
4866
4867 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4870         'has_call_handler' fields.
4871
4872         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4873
4874         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4875         first bblock if not needed. Fixes #512790.
4876         
4877 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4878
4879         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4880         
4881         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4882         wrappers.
4883
4884         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4885         remoting-invoke-with-check wrappers, which are not needed when running with
4886         full-aot, since it doesn't support remoting.
4887         
4888 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4891
4892         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4893         method info, it is not used anymore.
4894
4895         * mini.h: Bump AOT file format version.
4896         
4897         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4898         word smaller.
4899
4900         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4901         change above.
4902         
4903         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4904
4905         * mini.h: Bump AOT file format version.
4906         
4907 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4908
4909         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4910         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4911         iphone.
4912
4913         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4914         of CKFINITE and FBGE for VFP.
4915
4916 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4917
4918         * aot-compiler.c: Don't align code to 16 bytes on arm.
4919         
4920         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4921         before the methods they belong to.
4922
4923         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4924         the full-aot case if possible, since the trampoline will be called right 
4925         away.
4926
4927         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4928         trampolines to 1024 after the change above.
4929
4930         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4931         trampoline to save 8 bytes per trampoline.
4932
4933         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4934         change above.
4935
4936 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4937
4938         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4939
4940 2009-06-08  Martin Baulig  <martin@ximian.com>
4941
4942         * debug-mini.c
4943         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4944         (_mono_debugger_throw_exception): Don't make this static.
4945         (_mono_debugger_unhandled_exception): Likewise.
4946         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4947
4948         * debug-mini.c
4949         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4950         (_mono_debugger_throw_exception): Add function prototype.
4951         (_mono_debugger_unhandled_exception): Likewise.
4952
4953         * mini-exceptions.c
4954         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4955         arg; return the first exception handler if the exception is caught
4956         and we're running inside the debugger.
4957         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4958         improve exception handle inside runtime-invoke, check whether the
4959         exception is actually caught in the method being invoked and not
4960         by the runtime-invoke-wrapper.
4961
4962 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4963
4964         * image-writer.c: Improve support for the osx assembler.
4965
4966         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4967         support them.
4968
4969 2009-06-08  Martin Baulig  <martin@ximian.com>
4970
4971         * debug-mini.c
4972         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4973         (_mono_debugger_throw_exception): Don't make this static.
4974         (_mono_debugger_unhandled_exception): Likewise.
4975         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4976
4977         * debug-mini.c
4978         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4979         (_mono_debugger_throw_exception): Add function prototype.
4980         (_mono_debugger_unhandled_exception): Likewise.
4981
4982         * mini-exceptions.c
4983         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4984         arg; return the first exception handler if the exception is caught
4985         and we're running inside the debugger.
4986         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4987         improve exception handle inside runtime-invoke, check whether the
4988         exception is actually caught in the method being invoked and not
4989         by the runtime-invoke-wrapper.
4990
4991 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4992
4993         * image-writer.c (append_subsection): Don't align subsections of the
4994         debug_line section as a workaround.
4995
4996         * dwarfwriter.c: Emit line number info in the AOT case as well.
4997
4998 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4999
5000         This patch is contributed under the terms of the MIT/X11 license
5001
5002        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
5003        code_len <= code_size
5004
5005 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
5006
5007         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
5008
5009 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5010
5011         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
5012         invoke wrappers, we now use trampolines instead.
5013
5014 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5015
5016         * mini-darwin.c: The exception thread must not be registered with
5017         the GC.
5018
5019 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5020
5021         * mini-gc.c: Disable the code because it makes SGen crash.
5022
5023 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5024
5025         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5026         instead of asserting.
5027
5028 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5031         output file after the code has been compiled.
5032
5033 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5034
5035         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5036
5037 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5038
5039         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5040         entries distinction to simplify the code.
5041
5042         * mini.h: Bump AOT file format version.
5043         
5044 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * objects.cs: Fix the signature of one of the tests.
5047
5048         * mini.c (mini_create_ftnptr): New helper function, moved here from
5049         object.c.
5050         (mini_get_addr_from_ftnptr): Ditto.
5051         (mini_init): Install the new helpers.
5052
5053 2009-05-28  Martin Baulig  <martin@ximian.com>
5054
5055         Correctly initialize the debugger when embedding Mono.
5056
5057         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5058         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5059         see documentation in mini_debug_running_inside_mdb().
5060
5061         * debug-debugger.c
5062         (mini_debug_running_inside_mdb): New function to check whether
5063         we're running inside mdb.
5064
5065         * mini.c (mini_init): Call mini_debugger_init() if we're running
5066         inside the debugger.
5067
5068         * driver.c (mono_main): Moved the call to mini_debugger_init()
5069         into mini_init() to make this work when embedding Mono.
5070
5071         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5072         calls to mini_debugger_init().
5073
5074         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5075         mono_debugger_main() -> mini_debugger_main() and put them inside a
5076         `MONO_DEBUGGER_SUPPORTED' conditional.
5077
5078 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5079
5080         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5081         this is no longer in use.
5082         * mini.h: Same.
5083
5084 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5085
5086         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5087
5088         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5089         methods.
5090
5091 2009-05-27  Martin Baulig  <martin@ximian.com>
5092
5093 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5094
5095         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5096         long_conv_to_r_un to 64 bits.
5097
5098         * cpu-x86.md: Increase the instruction size due to the changes.
5099
5100         * iltests.il.in: Add regression test.
5101
5102         Fixes #467201.
5103
5104 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5105
5106         * objects.cs: Move the previous test from basic.cs to here.
5107
5108 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5109
5110         * basic.cs: Add regression test for #506915.
5111
5112 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5113
5114         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5115         optimization we must check the bb of the first byte of stobj as
5116         it's the only one set in cil_offset_to_bb.
5117
5118         Fixes #506915.  
5119
5120 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * image-writer.c: Fix pointer directive on ppc64.
5123
5124 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * image-writer.c (asm_writer_emit_section_change): Avoid using
5127         .bss subsections on ppc too.
5128
5129 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5130
5131         * image-writer.c: Fix the definition of TARGET_ASM_....
5132         
5133         * image-writer.c: Fix the emission of assembler directives in the last
5134         change.
5135
5136         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5137         exception throwing code to accomodate ppc64.
5138
5139         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5140         size to work on ppc64 too.
5141
5142         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5143         too.
5144
5145         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5146         the assembler dialect instead of using platform specific defines.
5147
5148 2009-05-22  Geoff Norton  <gnorton@novell.com>
5149
5150         * mini-arm.c (get_call_info): If a structure is split between the stack
5151         and argument registers, we should not advance the stack pointer by the entire
5152         native size, but just by the amount that spilled.
5153
5154 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5157         correctly.
5158
5159 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5160
5161         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5162         wrappers normally.
5163         
5164         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5165         methods so wrapper don't get added twice.
5166         (add_generic_instances): Don't add methods of arrays.
5167
5168         * generics.cs: Mark one test as !FULLAOT.
5169
5170 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5171
5172         * mini-x86.c (emit_move_return_value): Remove unused vars.
5173
5174 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5175
5176         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5177         decomposing 8 bytes structs into a LCALL.
5178
5179         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5180         pointer for where to store the returned regs.
5181
5182         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5183         state the concern.
5184
5185         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5186
5187 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5188
5189         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5190         without getenv.
5191
5192 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5193
5194         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5195
5196         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5197         generics.
5198
5199 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5200
5201         * local-propagation.c (mono_local_cprop): Avoid local propagation
5202         across paired add/sub if the first instruction dest reg is it's
5203         source reg. For example:
5204
5205         int_add_imm R12 <- R12 [1] clobbers: 1
5206         int_sub_imm R42 <- R12 [1] clobbers: 1
5207
5208         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5209         maintain the math identify.
5210
5211         Fixes #505375.
5212
5213 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5214
5215         * Makefile.am: avoid going on the network just to get the revision,
5216         use git log instead
5217
5218 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5219
5220         Fixed estimate for short branches on amd64 (they were off mark, and
5221         enabling call prolog-epilog instrumentations caused assertions).
5222         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5223         estimate for the maximum length of this basic block.
5224         * mini-amd64.c:
5225         - mono_arch_emit_prolog: compute max_length for each basic block
5226           (instead of max_offset), and inflate size estimate also for entry bb
5227           in case of code instrumentation.
5228         - mono_arch_output_basic_block: get rid of "cpos" (the current
5229           estimated "position" in the code), and always use "offset" instead,
5230           which is accurate; at the beginning of the function quickly recompute
5231           max_offset for all the remaining blocks, starting from the current
5232           cfg->code_len (which is correct, and not estimated) and using the
5233           estimated block lengths computed previously.
5234
5235 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5236
5237         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5238         functions, it is already done in the caller.
5239
5240         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5241
5242         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5243         MONO_ARCH_GSHARED_SUPPORTED define.
5244
5245         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5246
5247         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5248         function.
5249
5250 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5251
5252         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5253         call to mono_marshal_get_rgctx_invoke ().
5254
5255         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5256         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5257         gshared use the static rgctx trampolines now.
5258         
5259         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5260         platform supports it.
5261
5262 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5263
5264         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5265
5266         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5267
5268 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5269
5270         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5271
5272         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5273         for ppc.
5274
5275 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5276
5277         Made it possible for mono_arch_instrument_epilog to preserve
5278         argument registers, otherwise instrumenting the "epilogue" before
5279         a tail call would clobber them.
5280         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5281         if like mono_arch_instrument_epilog but with an additional parameter
5282         that states if argument registers must be preserved.
5283         * mini.c: implemented mono_arch_instrument_epilog as a call to
5284         mono_arch_instrument_epilog_full without asking to preserve argument
5285         registers (this makes the existing code work as usual).
5286         * mini-amd64.c:
5287         - mono_arch_instrument_epilog: add parameter to transform it into
5288         mono_arch_instrument_epilog_full, and preserve argument registers
5289         when required.
5290         - mono_arch_output_basic_block, OP_TAILCALL case: call
5291         mono_arch_instrument_epilog_full.
5292         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5293         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5294         only transformed mono_arch_instrument_epilog into
5295         mono_arch_instrument_epilog_full.
5296
5297 2009-05-15  Geoff Norton  <gnorton@novell.com>
5298
5299         * mini-darwin.c: This works on arm now.
5300
5301 2009-05-14  Geoff Norton  <gnorton@novell.com>
5302
5303         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5304         embedding api.
5305
5306 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5307
5308         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5309         label names.
5310
5311         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5312         wrappers during full aot mode correctly.
5313
5314         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5315         methods correctly.
5316
5317         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5318         mono_metadata_type_hash ().
5319
5320 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5321
5322         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5323         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5324         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5325         Removed MONO_INST_BRLABEL from the instruction flags, and the
5326         remaining code that used it, because we do not support branches inside
5327         basic blocks (and branch target labels) anymore.
5328         * Makefile.am: As part of the above cleanup, remove reference to
5329         BURG files which don't exist anymore.
5330
5331 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5332
5333         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5334         osx.
5335
5336         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5337         to use mono_arch_throw_corlib_exception.
5338
5339         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5340         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5341
5342         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5343         domain mempool.
5344
5345         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5346
5347         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5348         for the got to make debugging easier and to avoid confusing it with the
5349         system got.
5350         
5351         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5352         method so a breakpoint can be set when using gdb.
5353
5354 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5355
5356         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5357         on mono_method_get_imt_slot ().
5358
5359         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5360         num_decodes variables.
5361
5362         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5363         change as it doesn't seem to work.
5364         
5365         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5366         wrappers.
5367
5368 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5369
5370         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5371         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5372
5373         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5374         builder when using full aot.
5375
5376         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5377         here, it is already handled.
5378         
5379         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5380         correctly for IMT.
5381
5382         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5383
5384         * mini-arm.h: Enable IMT for full aot.
5385         
5386         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5387         arch doesn't support it.
5388
5389         * mini.c (mini_init): Don't disable IMT for full aot if the
5390         architecture supports it.
5391
5392         * mini.h (MonoAotTrampoline): New enum containing the different types
5393         of 'numerous' trampolines.
5394         (MONO_AOT_FILE_VERSION): Bump this.
5395
5396         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5397         static rgctx trampolines. Add support for full-aot IMT thunks.
5398
5399         * mini-amd64.h: Enable IMT for full aot.
5400
5401         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5402         to exclude tests belonging to a category.
5403
5404         * generics.cs: Mark some tests with a !FULLAOT category.
5405
5406         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5407         generics tests.
5408
5409 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5410
5411         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5412         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5413         (emit_plt): Fix a warning.
5414
5415 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5416
5417         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5418         back into aot-compiler.c to a place where the other functions shared by
5419         the runtime and aot compiler are.
5420         
5421         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5422         as done previously, instead of in MonoAotFileInfo, since pointers might have
5423         alignment requirements.
5424
5425         * mini.h: Bump AOT file format version.
5426
5427 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5428
5429         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5430         that is used at runtime from the aot-compiler.c, this makes it
5431         work on setups that remove the AOT compiler from the output
5432         image. 
5433
5434 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5435
5436         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5437         PPC.
5438
5439         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5440
5441         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5442
5443         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5444         stuff to mono_arch_decompose_long_opts ().
5445         (mono_decompose_opcode): Remove some dead code.
5446
5447 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5448
5449         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5450         cmethod can be null for quite a some reasons.
5451
5452 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5453
5454         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5455
5456 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5459
5460 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5461
5462         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5463         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5464         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5465         calls returning structures by addr on amd64.
5466
5467         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5468
5469         * iltests.il.in: Restructure the tail call tests a bit.
5470         
5471 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5472
5473         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5474         for virtual methods too.
5475
5476 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5477
5478         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5479         due to regression in verifying System.dll.
5480
5481 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5482
5483         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5484         in dynamic methods.
5485
5486         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5487         instances.
5488
5489         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5490         g_str_hash () which can change.
5491
5492         * driver.c (mini_regression): Disable optimizations not supported by
5493         the cpu. Fixes #500019.
5494
5495         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5496         build.
5497
5498 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5501         to the latest LLVM code.
5502
5503 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5504
5505         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5506
5507 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5508
5509         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5510         x86/amd64.
5511
5512         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5513         no longer saving offsets, so just save the patch types along with the other
5514         info.
5515         * aot-runtime.c (load_patch_info): Update after the changes to 
5516         encode_patch_list ().
5517         (decode_got_entry): Removed, merged into load_patch_info ().
5518         (is_shared_got_patch): Removed, call the same function from
5519         aot-compiler.c.
5520
5521         * mini.h: Bump aot file format version.
5522         
5523         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5524         half-finished no-dlsym code.
5525
5526         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5527         option.
5528
5529         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5530         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5531
5532 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5533
5534         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5535         buffer length to work with AOT code.
5536
5537         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5538         ldfld/stfld opcodes.
5539
5540         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5541         as it is not used.
5542
5543         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5544
5545         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5546
5547         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5548         LLVM API.
5549
5550         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5551         if needed. Don't decompose long operations when using llvm.
5552
5553 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5554
5555         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5556         PAGESIZE constant.
5557
5558         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5559
5560 2009-05-03  Martin Baulig  <martin@ximian.com>
5561
5562         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5563         mono_debugger_insert_method_breakpoint() since the class init
5564         handler we're inserting at the top of the method already gives us
5565         a notification.
5566
5567 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5568
5569         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5570         to mono_arch_decompose_long_opts () for x86 and arm.
5571
5572 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5573
5574         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5575         TARGET_AMD64 here.
5576
5577 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5578
5579         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5580         JIT code.
5581
5582 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5583
5584         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5585         number of trampolines used in full-aot mode.
5586
5587         * aot-compiler.c: Add an ntrampolines option to set the number of 
5588         trampolines emitted in full-aot mode.
5589
5590 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5591
5592         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5593         a volatile load. Get rid of get_tempname (), llvm assigns names
5594         automatically.
5595
5596         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5597         builder function.
5598
5599         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5600         a value.
5601
5602         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5603         level 1.
5604
5605         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5606         to the same register as a fixed sreg2. Fixes #497271.
5607
5608         * iltests.il.in: Add a new test.
5609
5610 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5611
5612         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5613         stack, since pushes complicate exception handling.
5614
5615         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5616         the stack if they are passed using moves.
5617
5618         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5619
5620         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5621         when using llvm.
5622
5623         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5624         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5625         of FMOVE if it is an R4.
5626
5627 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5630
5631         * mini.h (LLVMCallInfo): New structure to store calling convention 
5632         information for the LLVM back end similar to the CallInfo structures in 
5633         the back-ends.
5634
5635         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5636         call information in a format usable by LLVM.
5637         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5638
5639         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5640         mono_llvm_emit_call () when compiling using LLVM.
5641
5642         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5643         comments to all functions. Fix memory leaks. Add a public init/cleanup
5644         function.
5645
5646         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5647
5648         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5649         mono_array_new_va () jit icall.
5650         
5651 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5652
5653         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5654         multiple machine description files to be specified.
5655         * mini-ops.h: fixes for cross-compilation.
5656
5657 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5658
5659         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5660         some porting work.
5661
5662 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5663
5664         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5665         to prevent asserts in various passes. Fixes #497220.
5666
5667 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5668
5669         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5670         a racy assert.
5671
5672         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5673         table to avoid duplicates.
5674
5675         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5676         
5677         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5678         option is used.
5679
5680 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5683         is for method or field access.
5684
5685 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5686
5687         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5688         a Value to stdout.
5689
5690         * mini-llvm.c (mono_llvm_emit_method): Use it.
5691         
5692         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5693         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5694         on volatile values.
5695
5696         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5697         synchronized methods.
5698
5699         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5700
5701         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5702
5703         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5704         OP_LOADI8_MEM.
5705
5706         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5707         allowing some options to be set dynamically.
5708
5709 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5710
5711         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5712         unconditional branch.
5713
5714         * mini.h (MonoTrampolineType): Add new trampoline type 
5715         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5716         compiled code.
5717
5718         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5719         function.
5720
5721         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5722         creation function.
5723
5724         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5725         is enabled. Instead, use the llvm vcall trampoline.
5726         
5727         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5728
5729         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5730         
5731         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5732         functions.
5733
5734         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5735         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5736
5737         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5738         OP_IA64_CSET opcode.
5739
5740         * mini.c: Fix a warning.
5741
5742         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5743         THROW to the appropriate llvm type.
5744
5745 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * mini.c (mini_method_compile): Add statistics for methods JITted
5748         with/without LLVM.
5749
5750 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5753         OP_IA64_CMP_<cond>_IMM opcodes.
5754
5755 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5756
5757         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5758         corlib exceptions.
5759
5760         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5761         correctly.
5762
5763         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5764         GENERICINST.
5765
5766 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5767
5768         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5769
5770 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5771
5772         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5773         support.
5774
5775         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5776         rgctx invoke trampolines for x86.
5777
5778         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5779         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5780         (mono_arch_get_vcall_slot): Simplify this.
5781
5782 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5783
5784         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5785         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5786
5787 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5788
5789         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5790         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5791
5792         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5793
5794         * liveness.c (visit_bb): Remove a needless assert.
5795
5796 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5797
5798         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5799         full aot support to the arch specific code.
5800
5801         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5802
5803         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5804
5805         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5806         
5807         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5808         collect information about the delegate invoke impl trampolines.
5809
5810         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5811         to save trampolines during full-aot mode.
5812
5813         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5814         creation function which returns a trampoline which sets the rgctx
5815         argument.
5816         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5817         wrapper if possible.
5818         (mono_delegate_trampoline): Ditto.
5819
5820         * mini.c (mono_jit_runtime_invoke): Ditto.
5821
5822         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5823         
5824         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5825
5826         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5827         
5828 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5829
5830         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5831         just setting the opcode to OP_NOP.
5832
5833 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5834
5835         * mini.c (mini_method_compile): Put the last change inside an 
5836         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5837         
5838         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5839         and extend live ranges to cover the whole method when using xdb.
5840
5841         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5842         do it in the trampolines.
5843
5844         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5845         needed.
5846
5847         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5848         
5849         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5850         call code in full-aot mode since IMT is disabled there.
5851         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5852         new JIT no longer has that restriction.
5853
5854         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5855
5856         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5857         a more compact format.
5858         (mono_aot_wrapper_name): New function to return a unique name for a
5859         wrapper method, also used by the AOT runtime.
5860
5861         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5862         aot-compiler.c.
5863
5864         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5865         when a ICollection<T> etc is encountered.
5866         (add_generic_instances): Process method arguments/locals too.
5867         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5868         trampoline names.
5869
5870         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5871         
5872 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5873
5874         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5875
5876         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5877
5878         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5879         representing the result of the decomposition. Nullify instructions
5880         instead of setting them to OP_NOP since nops can't have registers
5881         set.
5882
5883 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5884
5885         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5886         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5887         info. Strip 'mapping symbols' on ARM.
5888
5889         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5890         
5891         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5892         this with the native genmdesc.
5893
5894 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5895
5896         * aot-runtime.c:  Fixing the MSVC build.
5897
5898         Code is contributed under MIT/X11 license.
5899
5900 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5901
5902         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5903         JITted code depends on it.
5904
5905 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5906
5907         * aot-compiler.c: Use new MonoGenericParam accessors.
5908
5909 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5910
5911         Reduce memory usage and improve correctness wrt MonoGenericParam
5912         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5913         handing.  Avoid allocating MonoGenericParams, but use the ones in
5914         the container itself.
5915
5916 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5917
5918         * tasklets.c: Return exceptions in the out argument.
5919
5920 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5921
5922         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5923         opcode. Use pointer types in more places instead of casting them to 
5924         integers.
5925
5926         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5927         optimizations.
5928         (mono_llvm_optimize_method): New helper function to optimize a method.
5929
5930         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5931         widening code so it could be called from more places.
5932         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5933         code paths in the call opcodes.
5934
5935 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5936
5937         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5938
5939 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5940
5941         * dwarfwriter.c: Use _ to separate class name 
5942         components as gdb can't handle '.'. Represent reference variables
5943         as 'class <NAME>&'.
5944         
5945         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5946
5947         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5948         
5949         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5950
5951         * gc-test.cs: New file with GC stack marking tests.
5952         
5953         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5954         negative numbers for vfp.
5955
5956         * basic-float.cs: Add a test.
5957         
5958 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5959
5960         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5961
5962 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5963
5964         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5965         part of tasklet/continuation support.
5966
5967 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5968
5969         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5970         amd64 opcodes inside an ifdef.
5971
5972         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5973         of complex types.
5974         
5975         * dwarfwriter.c (emit_type): Emit the class info for classes.
5976
5977 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5978
5979         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5980
5981         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5982
5983         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5984
5985         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5986
5987 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5988
5989         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5990
5991         * mini-llvm.c: Update comments.
5992
5993         * mini.h (COMPILE_LLVM): New macro.
5994
5995         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5996
5997         * ssa.c (mono_ssa_compute): Ditto.
5998         
5999         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
6000         the unwind ops from a DWARF FDE.
6001
6002         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
6003         methods by extracting the dwarf unwind ops from the unwind info generated
6004         by LLVM.
6005         
6006         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
6007         calls.
6008
6009         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
6010         addressing modes.
6011
6012 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
6013
6014         * Makefile.am (llvm_sources): Enable this.
6015
6016         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
6017         failing back to the JIT if something cannot be handled.
6018
6019         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
6020         compiling with LLVM.
6021
6022         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
6023         compiling with LLVM.
6024
6025         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6026         compiling with LLVM.
6027
6028         * mini-ops.h: Add a few opcodes needed by LLVM.
6029
6030         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6031         has no unwind info.
6032
6033         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6034         backend.
6035
6036         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6037
6038         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6039
6040 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6041
6042         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6043         ridiculously large methods.
6044
6045 2009-03-31  Martin Baulig  <martin@ximian.com>
6046
6047         * debug-debugger.c (debugger_remove_breakpoint): Call
6048         mono_debugger_remove_class_init_callback ().
6049
6050 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6051
6052         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6053         right before emitting code, not at the start.
6054
6055         * mini.c (mono_postprocess_patches): Extract this into a separate function
6056         from mono_codegen ().
6057
6058         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6059         byref types correctly.
6060
6061 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6064         by the last change.
6065
6066 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6067
6068         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6069         indirect calls, this avoids problems where get_vcall_slot () would get
6070         confused by the native code for the instruction preceeding the call.
6071         (mono_arch_get_vcall_slot): Simplify this.
6072         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6073
6074         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6075         register allocator now seems to depend on them instead of the data in
6076         cpu-<ARCH>.md.
6077
6078         * mini.c (mini_method_compile): Throw the correct type of exception if
6079         mono_method_get_header () fails because of a loading error.
6080
6081 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * mini.c (mini_method_compile): Clear the loader error if the method
6084         header cannot be decoded.
6085
6086         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6087         interface methods on proxies correctly.
6088
6089         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6090         this argument for vtype methods. Add precise liveness info for arguments.
6091
6092         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6093         LIVERANGE_START/END opcodes.
6094
6095         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6096         for arguments and values in registers.
6097
6098 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6101         return a valuetype. Fixes #487518.
6102
6103         * iltests.il: Add a test.
6104         
6105         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6106
6107         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6108         closed over a null reference correctly.
6109
6110 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6111
6112         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6113
6114 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6115
6116         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6117         allocated to the same registers as fixed sregs.
6118
6119 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6120
6121         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6122         ATOMIC_CAS_IMM ops.
6123
6124         * method-to-ir.c: Handle more cases for
6125         Interlocked.CompareExchange.
6126
6127         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6128         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6129         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6130
6131 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6132
6133         * aot-runtime.c (decode_method_ref): Fix a warning.
6134
6135         * unwind.c (mono_unwind_frame): Ditto.  
6136
6137 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6138
6139         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6140         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6141
6142         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6143         fix the handling of large values in the ALU_PC_G0_NC relocation.
6144
6145 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6146
6147         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6148
6149 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6150
6151         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6152         ops.
6153
6154 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6155
6156         * method-to-ir.c: MINI_OP3 needs a comma.
6157
6158         * method-to-ir.c, mini.h, mini.c: Remove
6159         mono_init_op_sreg_counts ().
6160
6161 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6162
6163         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6164         OP_JMP.
6165         
6166         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6167         assertion.
6168
6169         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6170
6171         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6172         code somewhat.
6173
6174 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6175
6176         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6177         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6178         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6179         operations.
6180
6181 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6182
6183         * driver.c: Change location of gc_wrapper.h.
6184
6185         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6186         inside finally clauses correctly. Fixes #485721.
6187
6188         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6189         after the change above.
6190
6191         * exceptions.cs: Add a test.
6192         
6193 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6194
6195         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6196
6197         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6198         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6199         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6200
6201         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6202         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6203
6204 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6205
6206         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6207         Simplify logic for ensure_method_is_allowed_to_call_method. 
6208         Handle wrappers on callers.
6209
6210 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6211
6212         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6213         them don't run yet.
6214
6215         * basic-simd.cs: Fix the names of some test methods.
6216
6217 2009-03-18  Geoff Norton  <gnorton@novell.com>
6218
6219         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6220
6221 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6222
6223         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6224
6225 2009-03-17  Jb Evain  <jbevain@novell.com>
6226
6227         * driver.c: remove now uneeded call to mono_gc_base_init before
6228         mono_profiler_load.
6229
6230 2009-03-17  Jb Evain  <jbevain@novell.com>
6231
6232         * dwarfwriter.c (token_handler): handle more cases.
6233
6234 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6235
6236         * method-to-ir.c: Remove more dead code (that was required only
6237         because of method_is_safe). Fix compiler warnings.
6238
6239 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6240
6241         * method-to-ir.c: Remove unneeded/useless method_is_safe
6242         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6243
6244 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6245
6246         * mini.c (mini_method_compile): Print the method been compiled with
6247         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6248         for people not familiar with the runtime.
6249
6250 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6251
6252         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6253         a managed object which is later put into a GList. Return its class instead.
6254
6255         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6256         stack slots when using sgen.
6257
6258 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6259
6260         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6261
6262 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6263
6264         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6265         > so it works on the first vreg as well.
6266
6267 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6268
6269         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6270         trigger randomly.
6271
6272         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6273         
6274         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6275         implement GArray.
6276
6277 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6278
6279         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6280         native->IL offset mapping.
6281
6282 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6285
6286         * basic.cs: Add a test.
6287
6288 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6289
6290         * mini-x86.c (mono_arch_output_basic_block): Use different
6291         registers in case the ones we want to overwrite are used by the
6292         other operand.  Fixes regression in #480807.
6293
6294 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6295
6296         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6297
6298         * dwarfwriter.c (emit_line_number_info): The line number info for
6299         IL code was off by one. Fix that.
6300
6301         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6302         stack.
6303
6304 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6305
6306         Contributed under the terms of the MIT/X11 license by Steven
6307         Munroe <munroesj@us.ibm.com>.
6308
6309         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6310         Fixes #483462.
6311
6312 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6313
6314         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6315         as well.
6316
6317 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6318
6319         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6320         the delegate ctor handling code. Fixes #482638.
6321         
6322         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6323         #481458.
6324
6325         * iltests.il.in: Add a test.
6326         
6327         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6328         mini-posix.c.
6329
6330 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6331
6332         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6333         is shared generic code, return the trampoline, even if the method
6334         has already been compiled.  Fixes #479763.
6335
6336         * mini.c, mini.h: New function
6337         mono_jit_find_compiled_method_with_jit_info() which is the same as
6338         mono_jit_find_compiled_method() but also returns the jit info.
6339
6340 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6341
6342         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6343         for methods which actually have one.  For all other methods, make
6344         sure the this argument var is live the whole method.
6345
6346         * mini.c (mini_method_compile): Every shared method has a
6347         this/vtable/mrgctx info.  Fixes #480807.
6348
6349 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6350
6351         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6352         generic/imt thunks where some entries branch through the vtable,
6353         while other entries branch directly.
6354
6355 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6356
6357         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6358
6359         * mini-windows.c: Ditto.
6360         
6361         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6362         ctors.
6363
6364 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6367         down an assert.
6368
6369 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6370
6371         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6372         #481403.
6373
6374 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6375
6376         * exceptions-x86.c: Include debug-mini.h - fixes build.
6377
6378 2009-03-04  Martin Baulig  <martin@ximian.com>
6379
6380         * debug-mini.c: Clean up the exception API and add documentation.
6381         (mono_debugger_handle_exception): New public method; this is
6382         called when throwing an exception or encountering an unhandled one.
6383         (mono_debugger_call_exception_handler): Formerly known as
6384         mono_debugger_handle_exception(); this is used to tell the
6385         debugger that we're about to invoke an exception handler.
6386
6387 2009-03-04  Martin Baulig  <martin@ximian.com>
6388
6389         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6390         ../metadata/mono-debug-debugger.c; save and reset exception state.
6391
6392 2009-03-02  Martin Baulig  <martin@ximian.com>
6393
6394         * debug-mini.c: Moved the debugger exception handling here from
6395         ../metadata/mono-debug-debugger.c.
6396
6397         * debug-mini.h
6398         (MonoDebuggerExceptionAction): New exception typedef.
6399
6400         * debug-mini.c
6401         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6402
6403         * exceptions-amd64.c
6404         (mono_amd64_throw_exception): Use the new debugger exception
6405         handling code.
6406
6407         * mini-exceptions.c
6408         (mono_handle_exception_internal): Don't call
6409         mono_debugger_unhandled_exception() here.
6410
6411 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6412
6413         * mini.c aot-compiler.c: Update after the changes to 
6414         mono_marshal_get_runtime_invoke ().
6415
6416         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6417         Virtual generic methods might not have method->slot set, work around
6418         that.
6419
6420         * generics.cs: Add a test.
6421
6422 2009-03-02  Geoff Norton  <gnorton@novell.com>
6423
6424         * mini.c:
6425         * driver.c: Allow signal chaining of SIGFPE as well.
6426
6427 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6428
6429         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6430         this since it now receives the method not its generic context in the
6431         IMT reg.
6432
6433         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6434         generic/imt thunks where some entries branch through the vtable, while
6435         other entries branch directly.
6436
6437         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6438
6439         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6440         support for interface methods as well.
6441
6442         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6443         using the normal IMT thunks.
6444
6445         generics.cs: Add new tests.
6446         
6447         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6448         the generic inst to the generic imt thunks. This fixes AOT support, 
6449         improves consistency with the normal IMT thunks, and makes it easier to
6450         add support for interface generic virtual methods later.
6451
6452         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6453         
6454 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6455
6456         * driver.c (mono_set_signal_chaining): New public API function to enable
6457         signal chaining on POSIX platforms.
6458
6459         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6460         (si@lindenlab.com) to implement signal chaining. The original patch was
6461         contributed under the MIT X/11 license:
6462         https://bugzilla.novell.com/show_bug.cgi?id=318894
6463
6464 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6465
6466         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6467         too until it can be made to run on amd64.
6468
6469 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6470
6471         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6472         to  get_generic_context_from_code () + get_call_info () if possible.
6473
6474 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6475
6476         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6477         suspend-on-sigsegv functionality.
6478
6479         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6480         to suspend when a native SIGSEGV is received. This is useful for debugging
6481         crashes which don't happen under gdb, since a live process contains more
6482         information than a core file.
6483
6484         * mini-exceptions.c (mono_print_thread_dump): Use 
6485         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6486
6487         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6488
6489         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6490         
6491         * basic-float.cs: Disable the tests which currently fail on amd64.
6492
6493         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6494         value to mono_arch_patch_callsite () to fix crashes.
6495         
6496         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6497
6498 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6499
6500         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6501         nop code by patching the call address to point to the nullified class init
6502         trampoline, as the former does not seem to be safe on SMP machines.
6503
6504 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6505
6506         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6507         they were wrong.
6508
6509 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6510
6511         * basic-float.cs basic-calls.cs: Fix warnings.
6512
6513 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6514
6515         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6516         correct frame pointer in the LMF.  Should fix #478394.
6517
6518 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6519
6520         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6521
6522         * image-writer.c: Make the binary writer less verbose.
6523
6524 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6525
6526         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6527         are called from runtime invoke wrappers.
6528
6529 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * cpu-ppc.md (store_memindex): Increase the size of this.
6532
6533 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6534
6535         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6536
6537         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6538
6539         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6540         OP_LCONV_TO_R_UN.
6541
6542         Last fix for of #467201.
6543
6544
6545 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6546
6547         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6548
6549         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6550         and long_conv_to_r8_2:
6551
6552         Fixed part of #467201.
6553
6554 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6555
6556         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6557
6558         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6559         conversion to 32 bits.
6560
6561         * cpu-x86.md: Increase the size of int_conv_to_r4.
6562
6563         * basic-float.cs: Add a test for this.
6564
6565         Fixed part of #467201.
6566
6567 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6568
6569         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6570
6571         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6572         conversion to 64 bits.
6573
6574         * basic-float.cs: Add a test for this.
6575
6576         Fixed part of #467201.
6577
6578 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6579
6580         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6581
6582         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6583         This behavior is compatible with MS.
6584
6585         * iltest.il.in: Add a test for this.
6586
6587         Fixed part of #467201.
6588
6589 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6590
6591         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6592
6593         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6594         change the precision of the value.
6595
6596         * cpu-x86.md: Define len for float_conv_to_r4.
6597
6598         * basic-float.cs: Add a test for this.
6599
6600         Fixed part of #467201.
6601
6602 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6603
6604         * mini.c: Adjust locking order to the new semantics where the loader lock
6605         comes first.
6606
6607 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6608
6609         * aot-runtime.c:
6610         * mini-amd64.c:
6611         * mini-arm.c:
6612         * mini-ia64.c:
6613         * mini-mips.c:
6614         * mini-ppc.c:
6615         * mini-sparc.c:
6616         * mini-trampolines.c:
6617         * mini-x86.c:
6618         * mini.c:
6619         * tramp-alpha.c:
6620         * tramp-amd64.c:
6621         * tramp-arm.c:
6622         * tramp-hppa.c:
6623         * tramp-ia64.c:
6624         * tramp-mips.c:
6625         * tramp-ppc.c:
6626         * tramp-s390.c:
6627         * tramp-s390x.c:
6628         * tramp-sparc.c:
6629         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6630
6631 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6632
6633         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6634         as it is incorrect.
6635
6636 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6637
6638         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6639         for cctors if needed.
6640
6641 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6642
6643         * mini-ppc.c: Fix build on Darwin.
6644
6645 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6646
6647         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6648         version instead of 3 as valgrind doesn't like version 3.
6649
6650         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6651
6652         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6653         usable for hashing methods.
6654         (emit_extra_methods): Use the new hash to avoid putting every method in the
6655         same hash bucket.
6656
6657         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6658
6659         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6660         whenever a method ref could match a method.
6661         
6662         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6663         test to fail.
6664         
6665         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6666         methods refs.
6667
6668         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6669
6670         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6671         the encoding buffer.
6672
6673         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6674         mono_method_get_header () on inflated methods as an optimization.
6675
6676 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6677
6678         * ssa.c (fold_ins): Fix another crash if the instruction following the
6679         switch was optimized away.
6680
6681 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6682
6683         Contributed under the terms of the MIT/X11 license by Steven
6684         Munroe <munroesj@us.ibm.com>.
6685
6686         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6687
6688 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6689
6690         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6691         around the mono_domain_alloc calls, it is now done by the functions
6692         themselves.
6693
6694         * aot-compiler.c (compile_method): Only add wrappers referenced by
6695         the method if compiling with full AOT.
6696         (mono_compile_assembly): Error out if --aot=full is specified on
6697         a platform where it is not supported.
6698
6699         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6700         on ARM too.
6701
6702         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6703         AOT support.
6704
6705         * aot-runtime.c (load_named_code): Handle 
6706         mono_arm_throw_exception_by_token.
6707
6708         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6709
6710         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6711         unaligned.
6712
6713         * Makefile.am (fullaotcheck): Exit if a test fails.
6714
6715         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6716         on ARM.
6717         (mono_compile_assembly): Handle the assembler failing.
6718
6719         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6720         accepting subsections of .bss.
6721
6722         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6723         was optimized away.
6724
6725         * aot-compiler.c: Remove some unused includes.
6726         
6727         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6728         now in MonoImageWriter.
6729
6730         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6731         code sequence which matches a non-virtual call. Fixes #472654.
6732
6733 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6734
6735         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6736         xdebug code.
6737         
6738         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6739         use the image/dwarf writers directly.
6740
6741         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6742         field.
6743
6744         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6745         MonoDwarfWriter.
6746
6747         * image-writer.h: Fix some typos.
6748
6749         * dwarfwriter.h dwarfwriter.c: New files.
6750         
6751         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6752         separate module.
6753
6754         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6755         argument to return unwind info.
6756
6757         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6758
6759         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6760         
6761         * aot-runtime.c (decode_method_ref): Add a case for 
6762         MONO_AOT_METHODREF_WRAPPER_NAME.
6763
6764         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6765         for AOT.
6766
6767         * aot-compiler.c (encode_method_ref): Use the new constants.
6768
6769         * aot-runtime.c (decode_method_ref): Ditto.
6770
6771         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6772         be compiled, not the icall itself.
6773
6774 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6775
6776         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6777         using decode_method_ref ().
6778
6779         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6780         convert it to an in32. Fixes #475859.
6781
6782         * arrays.cs: Add a test.
6783
6784 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6785
6786         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6787         OP_LCONV_TO_U2.
6788
6789         * basic-long.cs: Add a test.
6790
6791 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6792
6793         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6794         remove the frame pointer in leaf methods which don't receive any
6795         arguments, don't throw exceptions and don't do dynamic stack
6796         allocations.
6797
6798 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6799
6800         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6801         the fail_tramp changes. Hopefully fixes #475132.
6802
6803 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6804
6805         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6806         instead of mono_metadata_signature_dup_full.
6807
6808 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6809
6810         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6811         for processing jump tables. Fixes #473787.
6812
6813 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6814
6815         * mini-generic-sharing.c: mini_method_get_context() just calls
6816         mono_method_get_context_general() now.
6817
6818         * mini.c, mini.h: Moved get_object_generic_inst(),
6819         construct_object_context_for_method() and
6820         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6821
6822 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6823
6824         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6825         basic block fell through to its successor bblock without a branch. Fixes
6826         #474718.
6827
6828         * iltests.il.in: Add a test.
6829         
6830         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6831         (can_encode_patch): We can now handle arrays of generic parameters and
6832         array methods.
6833
6834         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6835
6836         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6837         the AOT file to avoid some #ifdefs in aot-runtime.c
6838
6839         * mini.h: Bump AOT file format version.
6840
6841 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6842
6843         * Makefile.am (fullaotcheck): Make this run the tests.
6844
6845         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6846
6847 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6848
6849         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6850         individually.  Fixes #473482.
6851
6852 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6853
6854         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6855
6856 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6857
6858         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6859         (mono_compile_assembly): Hush compile warnings about
6860         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6861         code path.
6862
6863 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6864
6865         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6866
6867         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6868
6869         * aot-compiler.c: Fix arm support.
6870
6871         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6872         img_writer_emit_unset_mode () function.
6873
6874         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6875         (mono_unwind_get_dwarf_pc_reg): Ditto.
6876
6877         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6878         Move almost all platform specific code to a set of arch_ functions, 
6879         and document them to ease porting.
6880         
6881         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6882
6883         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6884
6885         * aot-compiler.c: Extract the image writing functionality into a separate
6886         module to reduce the size of this file.
6887
6888 2009-02-09  Geoff Norton  <gnorton@novell.com>
6889
6890         * mini-s390.c: Fix the signature of emit_sig_cookie.
6891
6892 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6893
6894         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6895
6896         * aot-runtime.c (is_shared_got_patch): Ditto.
6897
6898         * aot-runtime.c (load_named_code): Cope with the fact that 
6899         decode_got_entry () won't decode the patch fully if its corresponding got
6900         entry is already filled.
6901         
6902         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6903         Initialize *ji.
6904         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6905
6906         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6907         as the moving pointer instead of 'buf' for consistency with the rest of the
6908         codebase.
6909         (mono_arch_create_monitor_exit_trampoline): Ditto.
6910
6911         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6912         generic_class_init trampolines.
6913         (add_generic_class): Extract some code from add_generic_instances () into a
6914         separate function so it can be called from other places too.
6915         (compile_method): Call add_generic_class () for the classes of inflated methods
6916         referenced by the method.
6917         (can_encode_patch): Allow references to generic parameters.
6918
6919         * aot-runtime.c: Add support the patches required by the new trampolines.
6920         
6921         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6922         support.
6923
6924         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6925         full-aot support.
6926
6927         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6928         this from get_throw_pending_exception, make the signature full aot compatible.
6929
6930         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6931
6932         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6933
6934         * exceptions.cs: Add a test.
6935
6936 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6937
6938         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6939         use the DWARF_DATA_ALIGN constant instead.
6940
6941         * exception-<ARCH>.c: Update after the above change.
6942
6943         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6944         dwarf unwinder.
6945
6946         * mini-arm.c: Enable the dwarf unwinder.
6947
6948         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6949         instead of mono_class_setup_vtable ().
6950
6951 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6952
6953         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6954         dwarf unwinder.
6955
6956         * mini-x86.h: Enable the dwarf unwinder.
6957
6958 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6959
6960         Fix mcs/tests/test-7.cs
6961         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6962         2009-02-03.
6963
6964 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6965
6966         * mini.c (print_jit_stats): Remove some unused statistics.
6967
6968 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6969
6970         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6971
6972 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6973
6974         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6975         the method we get from mono_object_get_virtual_method() because
6976         that function does it properly, now.
6977
6978 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6979
6980         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6981         opcodes. Fixes #472775.
6982
6983 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6984
6985         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6986         fact that mono_find_jit_info() sometimes returns the context
6987         corresponding to the jit info in new_ctx.  Fixes #472600.
6988
6989 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6990
6991         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6992         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6993         klass->enum_basetype directly.
6994
6995         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6996         enum subtypes.
6997
6998         * unwind.c: Avoid 0 sized arrays.
6999
7000 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7001
7002         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
7003         size on systems with 64k pages. Fixes #471389.
7004
7005 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7006
7007         Contributed under the terms of the MIT/X11 license by Steven
7008         Munroe <munroesj@us.ibm.com>.
7009
7010         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
7011         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
7012         necessary.
7013
7014 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7015
7016         Contributed under the terms of the MIT/X11 license by Steven
7017         Munroe <munroesj@us.ibm.com>.
7018
7019         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
7020         comparison fix.
7021
7022         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
7023         The trampoline can be longer on PPC64.
7024
7025 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7026
7027         Contributed under the terms of the MIT/X11 license by Steven
7028         Munroe <munroesj@us.ibm.com>.
7029
7030         * mini-ppc.c: Compiler warning fixes and trivial code
7031         simplifications.
7032
7033 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7036         ins->dreg which could be a hardware register, not a vreg.
7037
7038         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7039         
7040         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7041         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7042
7043         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7044         
7045         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7046         ->dreg, that is not the vreg we are looking for.
7047
7048         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7049
7050         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7051         LIVERANGE_END.
7052
7053         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7054         strange crashes.
7055
7056 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7057
7058         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7059
7060         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7061         the line diff is 0.
7062
7063         * aot-compiler.c: Add xdebug support on x86.
7064
7065         * unwind.c: Add x86 support.
7066         
7067         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7068         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7069
7070         * mini.c (mini_method_compile): Ditto.
7071         
7072         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7073         the variable index.
7074
7075         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7076         which mimic .push_section/.pop_section in GAS.
7077         
7078         * aot-compiler.c: Emit precise live range information for variables.
7079
7080         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7081
7082         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7083         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7084         them.
7085
7086         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7087         the live ranges of variables.
7088
7089         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7090         of the variable in terms of native offsets.
7091
7092 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7093
7094         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7095         
7096 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7097
7098         Contributed under the terms of the MIT/X11 license by Steven
7099         Munroe <munroesj@us.ibm.com>.
7100
7101         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7102         order (offset then base reg) for ppc_load_multiple_regs.
7103         (emit_save_saved_regs) Correct operand order for
7104         ppc_store_multiple_regs.
7105         (mono_arch_get_call_filter): Correct operand order for
7106         ppc_load_multiple_regs.
7107
7108         * mini-ppc.c (emit_memcpy): Fix operand order for
7109         ppc_load_reg_update and ppc_store_reg_update.
7110         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7111         (mono_arch_emit_epilog): Correct operand order for
7112         ppc_load_multiple_regs.
7113
7114         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7115         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7116
7117 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7118
7119         * cpu-ppc64.md: Fixed storer4_memindex length.
7120
7121 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7122
7123         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7124         line number info.
7125         
7126         * aot-compiler.c (emit_line_number_info): Optimize this.
7127
7128 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7129
7130         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7131         
7132         * aot-compiler.c: Add debug info for methods without debug info by
7133         emitting an IL file and having the line number info referencing that file.
7134
7135         * aot-compiler.c: Optimize the size of the generated line number info.
7136
7137         * aot-compiler.c: Emit line number info in xdebug mode.
7138
7139         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7140         million arguments.
7141
7142 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7145
7146         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7147         is used.
7148
7149 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7150
7151         * basic-calls.cs: Test for the weird crash found on arm.
7152         
7153 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7154
7155         * cpu-arm.md: Increase the size of storer8_membase_reg and
7156         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7157
7158         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7159         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7160         reg to LR otherwise we'll be loading/storing from just the offset.
7161
7162 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7163
7164         Question: if we are storing gint32's inside the "*native_offset",
7165         should we change the signature to "gint32 *native_offset" to
7166         ensure that we do not have type definition problems?
7167         
7168         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7169         an int * as this is what the other function expects, causes
7170         problems with Freescale's compiler that defined int32_t to be a
7171         long and makes int incompatible 
7172
7173 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7174
7175         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7176         filename conflict with bjam.
7177
7178 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7179
7180         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7181         as it might use decomposed ops.
7182
7183 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7184
7185         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7186
7187         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7188         is defined.
7189
7190         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7191
7192         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7193         offsets.
7194
7195         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7196         way registers are stored in MonoContext on arm.
7197
7198         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7199         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7200
7201         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7202
7203         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7204
7205         * mini.c (mini_init): Register mono_isfinite.
7206
7207         * jit-icalls.c (mono_isfinite): New jit icall.
7208
7209         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7210         
7211         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7212         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7213         the parent frame.
7214
7215 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7216
7217         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7218         separate frame and stack pointers, so we must use FP to find the register
7219         spill area.
7220         The FP reg is retrieved from the MonoContext::regs array.
7221
7222 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7223
7224         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7225         as FPA requires it.
7226
7227 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7228
7229         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7230         return R4 and R8 when not running under softfloat.
7231
7232         Fixes basic-calls.exe
7233
7234 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7235
7236         * mini-arm.c: Implement some overflow opcodes.
7237
7238 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7239
7240         * ssa.c: handle another alloca.h
7241
7242         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7243         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7244         MONO_ARCH_USE_SIGACTION. 
7245
7246         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7247         capability defines.
7248
7249         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7250
7251         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7252         PPC targets as sigaction does not exist on all platforms, define
7253         this on a per-platform basis.
7254
7255         Instead of erroring out if the platform is not defined, include
7256         mini-ppc-os.h, and expect that the OS specific setting provides
7257         the required information.   
7258
7259 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7260
7261         * aot-compiler.c: Fix --enable-minimal=aot.
7262
7263 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7264
7265         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7266         previous change.
7267
7268 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * exceptions-arm.c: Fix warnings.
7271
7272         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7273         ARM.
7274
7275         * mini-x86.c: Fix --enable-minimal=jit build.
7276
7277         * mini.c: Really fix --enable-minimal=jit build.
7278         
7279         * mini.c (construct_object_context_for_method): Move this outside
7280         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7281
7282         "Backported" of r124984 from 2.0 branch.
7283         
7284         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7285
7286         "Backport" of r124977 + r124978 from 2.0 branch.
7287         
7288         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7289         to avoid calling mono_exception_from_token () from the throw trampoline.
7290         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7291         for throwing corlib exceptions, this fixes full-aot support for corlib
7292         exceptions.
7293
7294         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7295
7296 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7297
7298         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7299         part of the changes to split the code in mini into operating
7300         system specific files.
7301
7302         This patch was done by copying mini.c to the respective files to
7303         preserve SVN history.
7304
7305 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7308
7309 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7312         remoting-invoke-with-check wrappers of shared methods.
7313
7314         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7315
7316 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7317
7318         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7319         optimization if the top of stack is the last instruction in the
7320         bblock.  Otherwise it might have been used after its definition.
7321         Fixes #469742.
7322
7323 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7324
7325         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7326         method as well when get_vcall_slot () fails to match a code sequence.
7327
7328         * mini-arm.c: Fix the android build, which doesn't have
7329         __aeabi_read_tp.
7330
7331 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7332
7333         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7334         the s390x build.
7335
7336 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7337
7338         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7339
7340 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7341
7342         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7343         and put its id into jinfo->used_regs. This is only used on amd64,
7344         which is currently the only platform generating unwind info.
7345
7346         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7347         the dwarf unwinder. This is required to correctly handle async exceptions
7348         like thread abort and stack overflows, which can happen while a method
7349         is in the middle of its prolog or epilog.
7350         
7351         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7352         the unwind info belonging to an AOTed method.
7353
7354         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7355         into cfg->unwind_ops.
7356         
7357         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7358
7359         * mini.c (mini_init): Call mono_unwind_init ().
7360         (mini_cleanup): Call mono_unwind_cleanup ().
7361
7362         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7363         unwind info to be shared between methods.
7364
7365         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7366         saved in the LMF.
7367
7368         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7369         get_throw_pending_exception () to avoid initialization races.
7370
7371         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7372         mono_arch_exceptions_init () function.
7373
7374         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7375
7376 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7377
7378         * mini.c (mono_get_domain_intrinsic): New helper function.
7379         (mono_get_thread_intrinsic): Ditto.
7380
7381         * mini-arm.c mini-ia64.c: Use the new helper functions.
7382         
7383         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7384         the last constrained_call change, since it is needed in the non-AOT
7385         case as well.
7386
7387         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7388         
7389         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7390         mono_get_lmf_addr () on arm eabi linux.
7391
7392 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7395         code sequence which matches a non-virtual call.
7396
7397 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7398
7399         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7400         stack pointer (r1).
7401
7402 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7403
7404         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7405         runtime-invoke wrappers, since they are also shared based on signature.
7406
7407 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7408
7409         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7410         info from the (correct) context.
7411
7412 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7413
7414         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7415         
7416         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7417         using dwarf unwinding info. Not yet used.
7418
7419         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7420
7421 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7422
7423         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7424         descriptors.
7425
7426         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7427         special case and handle mono_arch_delegate_invoke_impl() returning
7428         function descriptors.
7429
7430         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7431         trampolines return function descriptors, too.
7432
7433 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7434
7435         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7436         out_of_line optimization.
7437
7438 2009-01-21  Martin Baulig  <martin@ximian.com>
7439
7440         * mini.h
7441         (MonoCompile): Added `disable_deadce_vars' to disable removing
7442         unused variables.
7443
7444         * mini.c
7445         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7446         inside the debugger.
7447
7448         * liveness.c (mono_analyze_liveness): Don't remove any unused
7449         variables if `cfg->disable_deadce_vars' is set.
7450
7451 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7452
7453         * method-to-ir.c: Only apply exception constructor optimization if
7454         the the method actually belongs to an exception class.  Fixes
7455         #467456.
7456
7457 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7458
7459         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7460         change inside a #ifdef __mono_ppc64__.
7461
7462         * aot-compiler.c (compile_method): Remove the previous limitation.
7463
7464         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7465         on type variables in AOTed code.
7466         
7467         * aot-compiler.c (compile_method): Skip generic methods having type 
7468         constraints on their generic parameters.
7469
7470         * aot-compiler.c (compile_method): Check for methods which cannot be
7471         encoded inside RGCTX_FETCH patches as well.
7472
7473         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7474         build.
7475
7476 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7477
7478         * method-to-ir.c: Force the vtable variable in shared generic code
7479         for the case that they might show up on a stack trace where they
7480         are needed.
7481
7482         * mini-exceptions.c: Save and use generic sharing info as well as
7483         IP in stack traces to resolve shared generic instantiations.
7484
7485 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7486
7487         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7488         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7489
7490 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7491
7492         * method-to-ir.c: Do generic sharing for array constructors.
7493
7494 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7495
7496         * mini-exceptions.c (mono_print_thread_dump): Add information
7497         about the thread state using wapi_current_thread_desc.
7498
7499 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7500
7501         * basic-simd.cs: Tests for the new constructors. 
7502
7503 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7504
7505         * mini-ops.h: Added OP_EXPAND_*
7506
7507         * cpu-x86.md: Same.
7508
7509         * mini-x86.c (mono_arch_output_basic_block): Same.
7510         
7511         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7512
7513 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * iltests.il.in: Add a test for #467385.
7516
7517 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7518
7519         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7520         thread been cleaned up is not the same currently in execution.
7521
7522         Fixes appdomain-unload crashes on windows, osx and linux variants
7523         without the __thread keyword.
7524
7525 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7526
7527         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7528         (koush@koushikdutta.com). Implement this for android.
7529
7530         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7531         begins with a digit.
7532
7533         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7534         mono_marshal_get_write_barrier ().
7535
7536 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7537
7538         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7539         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7540         that pass them on a register pair.
7541
7542         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7543         test was crashing due to that.
7544
7545 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7546
7547         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7548         trampoline code. Include ucontext.h only if available.
7549
7550 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7551
7552         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7553         and doesn't check whether it's sharable, like it was before
7554         removing the shared generics hash.  This brings IronPython
7555         performance back to what it was before that change.
7556
7557 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7558
7559         * method-to-ir.c: Handle delegate invocation optimization earlier,
7560         otherwise it would be handled (much more slowly) by the
7561         final/sealed optimization.
7562
7563 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7564
7565         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7566         domain is not set. Fixes #465864.
7567
7568 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7569
7570         * method-to-ir.c: Don't stop sharing of generic methods with catch
7571         clauses - we already handle those.
7572
7573 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7574
7575         * mini.c, mini.h: lookup_generic_method() is now
7576         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7577         making the shared_generics_hash obsolete.
7578
7579 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7580
7581         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7582         use the red zone.  Make room on the stack first and then use it,
7583         not the other way around.
7584
7585 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7586
7587         * mini.c (mini_init): Call mono_xdebug_init ().
7588
7589         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7590
7591 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7592
7593         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7594
7595         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7596         trampolines.
7597
7598         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7599         debug+unwind info for trampolines.
7600
7601         * mini.c (mono_create_unwind_op): New helper function.
7602
7603         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7604
7605 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7606
7607         * aot-compiler.c: Fix the build.
7608
7609 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7610
7611         * Makefile.am: Update dtrace-prelink.sh location.
7612
7613 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7614
7615         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7616         optimization. Fixes #464520.
7617
7618 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7619
7620         * mini-amd64.c : Adding code to save/restore non-volatile registers
7621            on Winx64.
7622
7623         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7624           registers on Winx64.
7625
7626         Contributed under MIT/X11 license.
7627
7628 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7629
7630         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7631         __GNUC_MINOR__ which can break when the major version changes.
7632
7633 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7634
7635         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7636
7637 2009-01-07  Geoff Norton  <gnorton@novell.com>
7638
7639         * helpers.c:  Allow mono -v -v -v to work on darwin.
7640
7641 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7642
7643         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7644           pattern. 
7645
7646         Contributed under MIT/X11 license.
7647
7648 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7649
7650         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7651         instead of directly accessing type->data.klass. Fixes #462016.
7652         (mono_allocate_stack_slots_full): Ditto.
7653
7654         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7655         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7656
7657         * aot-compiler.c (emit_plt): Fix ARM build.
7658
7659 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7660
7661         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7662         
7663         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7664         change.
7665
7666         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7667         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7668         #463357.
7669
7670         * iltests.il.in: Add a regression test.
7671
7672 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7673
7674         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7675
7676 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7677
7678         * basic-simd.cs: Add a regression test for #462457.
7679
7680 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * mini-ops.h: Add a definition of XPHI.
7683
7684         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7685
7686         * ssa.c (op_phi_to_move): Handle XPHI.
7687
7688         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7689
7690         Fixes #462457
7691
7692 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7693
7694         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7695
7696 2008-12-31  Geoff Norton  <gnorton@novell.com>
7697
7698         * mini-ppc.c: The prolog size allocated can be too small for darwin
7699         ppc32 under certain circumstances.  Also fix a small logic bug.
7700
7701 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7702
7703         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7704         while loading AOT methods.
7705
7706         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7707         since only the former is nulled out after a successful cast. This prevents
7708         crashes with rethrown exceptions when using --debug=casts.
7709
7710 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7711
7712         * mini.h: New macro for checking whether a method is final,
7713         i.e. whether the method or its class is marked final.
7714
7715         * method-to-ir.c: Use the new macro for all final-checks
7716         consistently.  Fixes the crash in the System.ServiceModel tests.
7717
7718 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7719
7720         * mini-exceptions.c (get_exception_catch_class): Corrected another
7721         overly strict assertion.
7722
7723 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7724
7725         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7726         Clobbering it is not allowed because the caller might use it as
7727         the vtable register in the interface call.
7728
7729 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7730
7731         * mini-exceptions.c (get_exception_catch_class): Corrected an
7732         overly strict assertion.
7733
7734 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7735         
7736         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7737
7738         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7739
7740         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7741
7742         * cpu-mips.md: correct lengths for certain long_ opcodes.
7743
7744         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7745
7746         * 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().
7747         
7748 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7749
7750         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7751         
7752 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7753         
7754         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7755         
7756 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7757
7758         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7759         next basic block.
7760         
7761 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7762
7763         * 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
7764
7765         * 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)
7766         
7767 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7768         
7769         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7770         
7771 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7772
7773         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7774         gshared code. Fixes #458947.
7775
7776         * generics.cs: Add a test.
7777
7778 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7779         
7780         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7781         
7782         * mini-mips.c: first pass n32 code generation.
7783
7784         * mini-mips.h: datatypes and defines for n32 support.
7785
7786         * exceptions-mips.c: first pass n32 code generation.
7787         
7788         * tramp-mips.c: first pass n32 code generation.
7789         
7790         * cpu-mips.md: add long_ opcodes.
7791         
7792 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7793
7794         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7795
7796         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7797         
7798         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7799         
7800         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7801
7802         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7803
7804         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7805
7806         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7807
7808         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7809
7810         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7811
7812 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7813
7814         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7815
7816 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7817
7818         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7819
7820 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7821
7822         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7823         descriptors for helper functions directly in front of the code.
7824
7825 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7826
7827         * method-to-ir.c: Removed an unnecessary assertion.
7828
7829 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7830
7831         * method-to-ir.c: Merge SGEN changes from the old JIT.
7832
7833 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * driver.c (compile_all_methods_thread_main): Handle failure of
7836         mono_get_method ().
7837
7838 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7839
7840         * mini-ppc.c: Merged with mini-ppc64.c.
7841
7842         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7843
7844         * Makefile.am: Use the same sources for PPC and PPC64.
7845
7846         * mini-ppc64.c: Removed.
7847
7848 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7849
7850         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7851         code to mono_bb_is_fall_through.
7852         
7853         * branch-opts.c (mono_remove_critical_edges): Same.
7854
7855 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7856
7857         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7858         expect that an OP_BR_REG will be there.
7859
7860 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7861
7862         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7863         for the many branch ops. The original check miss OP_BR_REG.
7864
7865         Fixes #457574.
7866         
7867 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7868
7869         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7870
7871 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7872
7873         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7874         while holding the aot lock.
7875
7876 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7877
7878         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7879         
7880 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7881
7882         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7883           to release all runtime callable wrappers held by the runtime.
7884
7885         Contributed under MIT/X11 license.
7886
7887 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7888
7889         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7890           for Winx64.
7891
7892         Contributed under MIT/X11 license.
7893
7894 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7895
7896         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7897         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7898
7899 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7900
7901         * cpu-mips.md: fix ckfinite length
7902
7903         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7904         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7905         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7906         
7907 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7908
7909         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7910         
7911 2008-12-08  Geoff Norton  <gnorton@novell.com>
7912
7913         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7914         size by 8 bytes as well.
7915
7916 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7917
7918         * basic-simd.cs: Fix method names for Vector16b.
7919         
7920 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7921
7922         * basic-simd.cs: Fix method names for Vector16sb.
7923
7924 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7925
7926         * basic-simd.cs: Fix method names for Vector8us.
7927         
7928 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7929
7930         * basic-simd.cs: Fix method names for Vector8s.
7931         
7932 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7933
7934         * basic-simd.cs: Fix method names for Vector4ui.
7935
7936 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7937
7938         * basic-simd.cs: Fix method names for Vector2l.
7939
7940 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7941
7942         * basic-simd.cs: Fix method names for Vector2d.
7943
7944 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7945
7946         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7947         that are extension methods.
7948
7949 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7950
7951         * basic-simd.cs: Fix method names for Vector4f.
7952
7953 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7956         as such. Fixes #456669.
7957
7958 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7959
7960         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7961         
7962 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7963
7964         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7965         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7966         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7967         (mips_adjust_stackframe): handle FP spills
7968                 
7969         * mini-ops.h: add mips_mtc1_s2
7970         
7971         * cpu-mips.md: add mips_mtc1_s2
7972         
7973 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7974
7975         * unwind.c: New file, move the unwind info encoding functions here from
7976         aot-compiler.c, so they could be used at runtime too.
7977
7978 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7979
7980         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7981         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7982         
7983 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7984
7985         * mini-mips.c: cleanup warnings
7986         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7987         (mips_adjust_stackframe): handle case of taking the address of stack locals
7988         
7989 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7990
7991         * aot-compiler.c: Implement a few functions missing from the asm writer.
7992         (emit_method_code): Only write symbols for methods when using the bin
7993         writer, since the assembler can't deal with the characters in our method
7994         names.
7995
7996         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7997
7998         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7999         call.
8000
8001         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
8002         a bit to also restore %rax.
8003
8004 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8005
8006         * mini-ppc.c: Some simple merges from mini-ppc64.c.
8007
8008 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8009
8010         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
8011         arguments.
8012
8013 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8014
8015         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
8016
8017         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
8018         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
8019
8020         * exceptions-ppc64.c: Removed.
8021
8022         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
8023
8024 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8025
8026         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8027         tramp-ppc64.c.
8028
8029         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8030
8031         * tramp-ppc64.c: Removed.
8032
8033 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8034
8035         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8036         the TYPESPEC table.
8037
8038 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8039
8040         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8041
8042         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8043         mini-ppc.h instead of mini-ppc64.h.
8044
8045         * mini-ppc64.h: Removed.
8046
8047 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8048
8049         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8050         
8051         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8052         
8053 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8054
8055         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8056         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8057         code easier.
8058
8059 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8060
8061         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8062
8063 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8064
8065         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8066
8067 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8068
8069         * basic-simd.cs: Tests for operator == and != on Vector4f.
8070
8071 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8072
8073         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8074
8075         * simd-intrinsics.c: Kill useless enum.
8076
8077 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8078
8079         * cpu-mips.md: add long_conv_to_ovf_i4_2
8080         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8081
8082 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8083
8084         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8085         
8086         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8087
8088 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8089
8090         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8091         
8092 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8093
8094         * basic-simd.cs: Add tests for new methods.
8095
8096 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8097
8098         * simd-intrinsics.c: Add support for operator == and !=
8099         on Vector4(u)i.
8100
8101         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8102
8103 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8104
8105         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8106
8107 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8108
8109         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8110
8111         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8112         MONO_PATCH_INFO_ICALL_ADDR.
8113
8114         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8115
8116         * aot-compiler.c: Resurrect full-aot support.
8117
8118 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8119
8120         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8121         
8122 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8123
8124         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8125         
8126 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8127
8128         * basic-simd.cs: Fix tests to work under ppc.
8129         Remove tests for methods that will be removed.
8130
8131 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8132
8133         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8134         generic type (via a typedef or typeref) correctly.
8135
8136 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8137
8138         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8139         diagnose an assertion failure.
8140
8141 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8142
8143         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8144         Fix trampoline size.
8145
8146         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8147         conversion opcodes are implemented natively instead via emulation.
8148
8149 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8150
8151         * cpu-mips.md: remove mips_xori
8152
8153         * mini-ops.h:  remove mips_xori
8154
8155         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8156
8157         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8158         
8159         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8160         
8161 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8162
8163         * cpu-mips.md: fix instruction lengths.
8164
8165         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8166
8167         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8168
8169         * mini-ops.h: fix slti / sltiu op profiles.
8170         
8171 2008-12-02  Martin Baulig  <martin@ximian.com>
8172
8173         * method-to-ir.c (mono_method_to_ir): Disable debugging
8174         information for the init locals block to make the debugger stop
8175         after all locals have been initalized.
8176
8177 2008-12-02  Martin Baulig  <martin@ximian.com>
8178
8179         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8180         running inside the debugger.
8181
8182 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8183
8184         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8185         is enabled.
8186
8187         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8188         alu->alu imm optimization which only shows if deadce is disabled.
8189
8190         * aot-compiler.c: Rename the function names for the binary and asm writers
8191         so they can coexist in the same process. Rework the xdebug code to use the
8192         asm writer. This avoids the need to call into the runtime to dump the
8193         debugging info. Add more debugging info for types.
8194
8195         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8196
8197         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8198         cpu description tables, they can't occur in cpu-<ARCH>.md.
8199
8200         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8201         the stack in CEE_LDFLDA. Fixes #450542.
8202
8203         * generics.cs: Add a new test.
8204
8205 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8206
8207         * mini-ops.h: updated MIPS opcodes
8208         * mini-mips.c: decompose long opts
8209         * mini-mips.h: decompose long opts
8210         
8211 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8212
8213         * cpu-mips.md: fix length on int_rem_un
8214         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8215         
8216 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8217
8218         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8219
8220         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8221
8222 2008-11-29  Martin Baulig  <martin@ximian.com>
8223
8224         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8225         mono_debug_using_mono_debugger() in addition to the
8226         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8227
8228 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8229
8230         * mini-ops.h: updated more MIPS opcodes
8231         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8232         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8233         
8234 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8235
8236         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8237
8238 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8239
8240         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8241         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8242         * mini-ops.h: correct selected mips opcode entries
8243         
8244 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8245
8246         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8247         make them work.
8248
8249 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8250
8251         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8252
8253 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8254
8255         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8256         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8257         * mini-mips.h: disable IMT
8258         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8259         
8260 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8261
8262         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8263
8264 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8265
8266         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8267
8268 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8269
8270         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8271         consistency.
8272
8273 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8274
8275         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8276         for Set/GetVector aligned versions.
8277
8278 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8279
8280         * basic-simd.cs: Add tests for Get/SetVector.
8281
8282 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8283
8284         * mini.c: Removed g_slist_append_mempool().  Now in
8285         metadata/mempool.c.
8286
8287 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8288
8289         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8290         size properly and make the bounds check optional.
8291
8292         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8293         for SetVector and IsAligned.
8294
8295 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8296
8297         * mini.c: Remove unused mono_normalize_opcodes () function.
8298
8299 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8300
8301         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8302         using the new atomic add ops now.
8303
8304         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8305         add.
8306
8307 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8308
8309         * mini-ppc64.c: Several fixes.
8310
8311 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8312
8313         * cpu-mips.md: added jump_table
8314         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8315
8316 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8317
8318         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8319
8320 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8321
8322         * mini-ops.h: corrected a handful of MIPS opcodes.
8323
8324 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8325
8326         * aot-compiler.c: MIPS to use ELF writer
8327
8328 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8329
8330         * mini-codegen.c: remove MIPS specific assert.
8331
8332 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8333
8334         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8335         fixes.  PPC64 now passes most of the runtime regressions.
8336
8337 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8338
8339         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8340         volatile intervals a bit.
8341
8342 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8343
8344         * basic-long.cs: New test case.
8345
8346 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8347
8348         * mini.c (mini_method_compile): Disable globalra for large methods for 
8349         now.
8350
8351         * regalloc2.c (order_moves): Add fp support.
8352
8353         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8354         source bblock ends with an OP_BR_REG.
8355
8356         * ratests.cs: Add a new test.
8357
8358 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8359
8360         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8361         sharing.  PPC64 now passes generics.exe.
8362
8363 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8364
8365         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8366
8367 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8368
8369         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8370         memory when mono_jit_info_table_find () can't find the method in the
8371         LMF case.
8372
8373         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8374         AOTed code too.
8375         
8376         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8377         writer too.
8378
8379 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8380
8381         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8382         Several fixes.  PPC64 now runs exceptions.exe and
8383         devirtualization.exe.
8384
8385 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8386
8387         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8388         arrays.exe and basic-math.exe.
8389
8390 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8391
8392         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8393         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8394
8395 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8396
8397         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8398
8399 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8400
8401         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8402
8403         * ir-emit.h: Move macros from method-to-ir.c to here.
8404
8405 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8406
8407         * mini-ops.h: Correct the long simd ops to use LREG.
8408
8409 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8410
8411         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8412         
8413         * mini-ops.h: Correct the dreg type of a few long opcodes.
8414
8415         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8416         Add netbsd support.
8417
8418 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8419
8420         * mini-ppc.c: remove negative stack references in epilog
8421         for platforms that don't support the red zone.
8422
8423 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8424
8425         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8426         point regs.  Now PPC64 passes basic-calls.exe.
8427
8428 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8429
8430         * basic-simd.cs: Add tests for accessors of Vector2l.
8431
8432 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8433
8434         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8435
8436         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8437         
8438         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8439
8440 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8441
8442         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8443         PPC64 passes basic-long.exe.
8444
8445 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8446
8447         * decompose.c: Decompose carry and overflow add on PPC64 like on
8448         other 64 bit archs.  Don't decompose sub at all on PPC64.
8449
8450         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8451         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8452         basic-long.exe.
8453
8454 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8455
8456         * basic-simd.cs: Add tests for accessors of Vector2d.
8457
8458 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8459
8460         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8461
8462         * cpu-x86.md: Same.
8463
8464         * mini-x86.c (mono_arch_output_basic_block): Same.
8465         
8466         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8467
8468 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8469
8470         * basic-simd.cs: Add tests for accessors of Vector4f.
8471
8472 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8473
8474         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8475
8476         * cpu-x86.md: Same.
8477
8478         * mini-x86.c (mono_arch_output_basic_block): Same.
8479         
8480         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8481
8482 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8483
8484         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8485
8486 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8487
8488         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8489
8490         * cpu-x86.md: Same.
8491
8492         * mini-x86.c (mono_arch_output_basic_block): Same.
8493         
8494         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8495
8496 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8497
8498         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8499
8500 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8501
8502         * simd-intrinsics.c: Enable setters for Vector16sb.
8503
8504 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8505
8506         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8507
8508         * cpu-x86.md: Same.
8509
8510         * mini-x86.c (mono_arch_output_basic_block): Same.
8511         
8512         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8513
8514 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8515
8516         * simd-intrinsics.c: Implement setter for Vector8us.
8517
8518 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8519
8520         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8521         for dead variables.
8522
8523 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8524
8525         * mini-ppc.c: remove references to the red zone in the prolog
8526         (for systems that don't support it).
8527
8528 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8529
8530         * cpu-ppc64.md: Fixed a few instruction lengths.
8531
8532         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8533         now.
8534
8535 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8536
8537         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8538         basic.exe now.
8539
8540 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8541
8542         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8543
8544 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8545
8546         * mini-ops.h: Added OP_INSERT_I2.
8547
8548         * cpu-x86.md: Same.
8549
8550         * mini-x86.c (mono_arch_output_basic_block): Same.
8551         
8552         * simd-intrinsics.c: Implement setter for Vector8s.
8553
8554         * simd-methods.h: Add the names of get setters of Vector8s.
8555
8556 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8557
8558         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8559         
8560         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8561         parameters.
8562
8563         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8564
8565 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8566
8567         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8568         for PPC64.  An empty program runs now.
8569
8570 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8571
8572         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8573
8574         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8575         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8576         info for JITted code is emitted into a shared library, loadable into gdb.
8577
8578 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8579
8580         * Makefile.am: Changes to build PPC64.
8581
8582         * mini-arch.h: Include mini-ppc64.h on PPC64.
8583
8584 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8585
8586         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8587         in PPC code up to r119147.
8588
8589 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8590
8591         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8592         cpu-ppc64.md: Changes for PPC64.
8593
8594         Based on code submitted by andreas.faerber@web.de at
8595         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8596         X11/MIT license.
8597
8598 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8599
8600         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8601         cpu-ppc64.md: Copied from the corresponding PPC files from
8602         r118846.
8603
8604 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8605
8606         * mini-ops.h: Added OP_ROUND.
8607
8608         * cpu-x86.md: Added round.
8609
8610         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8611
8612         * basic-math.cs: Added test_0_round to test rounding.
8613
8614         Contributed under MIT/X11 license.
8615
8616 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8617
8618         * aot-compiler.c : Fix the Winx64 build.
8619
8620         Contributed under MIT/X11 license.
8621
8622 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8623
8624         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8625         in OP_EXTRACT_R8 to avoid possible stack corruption.
8626
8627 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8628
8629         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8630
8631         * cpu-x86.md: Added extract_r8.
8632
8633         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8634         
8635         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8636         a couple of OP_EXTRACT_I4.
8637
8638         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8639
8640         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8641
8642 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8643
8644         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8645         and not 4.1. 
8646
8647 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8648
8649         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8650         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8651
8652         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8653         are not needed any more.
8654
8655         * mini.h: Remove the unused INS_LIST macros.
8656
8657         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8658         longer needed.
8659
8660         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8661         ir-emit.h.
8662
8663         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8664         mono_alloc_ireg () instead.
8665
8666         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8667         macros.
8668
8669         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8670         on amd64.
8671
8672         * aot-runtime.c (load_aot_module): Disable AOT when running under
8673         CAS.
8674
8675         * mini-amd64.h: Change the monitor fastpath defines to check for
8676         !PLATFORM_WIN32 so they work on *bsd too.
8677
8678         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8679
8680         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8681
8682         * mini.h (MonoCompile): Remove new_ir flag.
8683
8684         * regalloc.h regalloc.c: Remove unused code.
8685
8686         * cpu-*.md: Remove more unused opcodes.
8687
8688         * simple-cee-ops.h simple-mini-ops.h: Removed.
8689
8690         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8691         
8692 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8693
8694         * aliasing.h: Removed.
8695
8696         * *.c: Remove references to aliasing.h and inssel.h.
8697
8698         * mini.c: Remove additional unused functions.
8699
8700         * mini-ops.h cpu-*.md: Remove unused opcodes.
8701
8702 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8703
8704         Remove the old JIT code.
8705
8706         * inssel*.brg: Removed.
8707
8708         * ssa.c abcremoval.c aliasing.c: Removed.
8709
8710         * ssa2.c: Renamed to ssa.c.
8711
8712         * abcremoval2.c: Renamed to abcremoval.c.
8713
8714         * *.c: Removed all !cfg->new_ir code.
8715
8716         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8717         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8718
8719         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8720         
8721 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8722
8723         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8724         to simplify the code and cut back on the number of global symbols in the AOT
8725         file.
8726         
8727         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8728
8729 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8730
8731         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8732         with the got/got_info tables.
8733
8734         * mini.h: Bump AOT file format version.
8735         
8736         * unwind.h: New file, contains definitions for stack unwinding.
8737
8738         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8739         to cfg->unwind_ops.
8740         
8741         * aot-compiler.c: Generalize the emitting of unwind information to use the
8742         information in cfg->unwind_ops.
8743
8744         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8745
8746         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8747         AOT method frames. Enable writing symbols for methods by default.
8748
8749 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8750
8751         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8752         and make it work with vectors of element sizes 1, 2 and 4.
8753
8754         * simd-intrinsics.c: Enable getter for all vectors with element size
8755         1, 2 or 4.
8756
8757         * simd-methods.h: Add the names of other getters.
8758
8759         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8760
8761         * cpu-x86.md: Same.
8762
8763         * mini-x86.c: Same.
8764
8765 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8766
8767         * mini-ppc.h: portability fix.
8768
8769 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8770
8771         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8772         buggy and will overwrite it.
8773
8774 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8775
8776         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8777         Use it to emit local symbols for all methods so AOTed methods show up with
8778         their full name in gdb/valgrind output.
8779
8780 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8781
8782         * mini-ppc.c: portability fixes.
8783
8784 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8785
8786         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8787         entries out of the if (!generic_shared...) code so it is always done.
8788         (mono_class_init_trampoline): Do the patching when running under valgrind
8789         too, newer versions of valgrind have no problems with it.
8790
8791 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8794         further sections.
8795
8796 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8797
8798         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8799         filters.
8800
8801 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8802
8803         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8804
8805 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8806
8807         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8808
8809         * cpu-x86.md: Same.
8810
8811         * mini-x86.c: Same.
8812
8813         * simd-intrinsics.c: Same.
8814
8815 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8816
8817         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8818
8819 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8820
8821         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8822         to work with more Vector types.
8823
8824 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8825
8826         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8827         store the elemens directly instead of using and intermediate.
8828
8829 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8830
8831         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8832
8833         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8834         to preserve %eax for aot plt trampolines.
8835
8836         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8837         (encode_method_ref): Flag synchronized methods so they won't go through
8838         the AOT trampoline.
8839
8840         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8841         wrappers.
8842
8843         * cpu-ia64.md (jmp): Increase max length.
8844
8845 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8846
8847         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8848         open generic classes.
8849
8850         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8851
8852         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8853         box+brtrue optimization since it causes test failures on x86.
8854
8855 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8856
8857         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8858
8859         * cpu-x86.md: Same.
8860
8861         * mini-x86.c: Same.
8862
8863         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8864         for simd ctor values. 
8865
8866         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8867         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8868
8869 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8870
8871         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8872         LogicalRightShift.
8873
8874         * simd-instrincs.c: Same.
8875
8876         * basic-simd.cs: Same.
8877
8878 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8879
8880         * ratests.cs: Add more tests.
8881
8882         * regalloc2.c (add_spill_code): Handle more corner cases.
8883
8884 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8885
8886         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8887         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8888         both the source an destination of an instruction.
8889
8890 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8891
8892         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8893         wapihandles.c: more portability changes.
8894
8895 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8896
8897         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8898         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8899         safe to execute in a signal handler and the kernel provides better
8900         the info in /proc/self/smaps. Avoid the assert on sigaction during
8901         cleanup.
8902
8903 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8904
8905         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8906         do the bblock linking hack if it is actually needed.
8907
8908         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8909         up linking.
8910
8911         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8912         crash problem is fixed.
8913
8914         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8915         bblocks.
8916
8917         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8918         for catch clauses.
8919         (mini_method_compile): Set the starting value of next_vreg to 
8920         MAX_IREGS + MAX_FREGS when using globalra.
8921
8922         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8923         filter clauses with BB_EXCEPTION_HANDLER.
8924
8925         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8926
8927 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8928
8929         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8930         space for stdcall.  Fixes regressions on Win32.
8931
8932 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8933
8934         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8935         bblocks.
8936         (linear_scan): Remove an assert which doesn't seem to be needed.
8937
8938         * local-propagation.c (mono_local_deadce): Avoid a call to
8939         MONO_DELETE_INS which would screw up the instruction linking.
8940
8941         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8942
8943         * regalloc2.c: Upgrade to work the current JIT code.
8944
8945 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8946
8947         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8948         case.
8949
8950         * aot-runtime.c: Remove some dead code.
8951
8952         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8953         consistency.
8954         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8955
8956         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8957         trampolines using sscanf since atoi doesn't work on large unsigned values.
8958
8959         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8960         Initialize code_size.
8961
8962 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8963
8964         * method-to-ir.c (mini_emit_inst_for_method): Make
8965         Interlocked.CompareExchange work for Int arguments on 32 bit
8966         archs, as well.
8967
8968 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8969
8970         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8971
8972 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8973
8974         * main.c Fix MSVC build.
8975
8976         Contributed under MIT/X11 license.
8977
8978 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8979
8980         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8981         alignment larger than 8 bytes are aligned correctly, too.
8982
8983         * mini.c: Honor the min_align field of MonoClass when laying out
8984         the stack.
8985
8986 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8987
8988         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8989
8990         * aot-compiler.c (emit_plt): Fix a warning.
8991         
8992         * aot-compiler.c: Implement ARM support in the binary writer.
8993
8994 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8995
8996         * basic-simd.cs: Add test for getter with byref arg.
8997         Fix the naming of a few tests.
8998         Add missing checks to a test.
8999
9000 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9001
9002         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
9003
9004         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
9005         most of the full-aot support for monitor enter/exit trampolines.
9006
9007         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
9008         enter/exit trampoline creation functions.
9009
9010         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
9011         make dist.
9012
9013 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
9014
9015         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
9016         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
9017         implement the needed functionality without adding crap to the runtime.
9018
9019 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9020
9021         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
9022         non-x86 builds.
9023
9024         * mini.c (mono_build_date): New global version holding the build date in
9025         string format.
9026         
9027         * Makefile.am (buildver.c): Generate a file containing the build date.
9028
9029         * main.c: Set the build date from the generated file.
9030
9031         * mini.c (mono_get_runtime_build_info): New helper function returning build
9032         information in a string format.
9033         
9034         * driver.c (mono_main): Print the build date in --version.
9035
9036         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9037         file when the bind-to-runtime-version option is used.
9038
9039 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9040
9041         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9042
9043 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9044
9045         * simd-methods.h: Rename prefetch methods.
9046
9047         * simd-intrinsics.c: Same.      
9048
9049 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9050
9051         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9052         sizes.
9053
9054 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9055
9056         * aot-compiler.c: Use the bundled elf header files instead of depending on
9057         the system one.
9058         
9059         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9060         mempool.
9061
9062         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9063         on every call.
9064
9065 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9066
9067         * cpu-x86.md: Add store nta ops.
9068
9069         * mini-ops.h: Same.
9070
9071         * mini-x86.c: Same.
9072
9073         * mini.h: Add an enum for simd prefetch modes.
9074
9075         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9076         of store. Use the changed code to support store nta.
9077
9078         * simd-intrinsics.c: Add prefetch ops for all vector types.
9079
9080 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9081
9082         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9083         threads.
9084         
9085         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9086         names.
9087
9088         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9089         trampolines.
9090
9091 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9092
9093         * mini-x86.c: Fixed commit.
9094
9095 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9096
9097         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9098
9099 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9100
9101         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9102         and MONITOR_EXIT, for the ASM fastpaths.
9103
9104         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9105         available.
9106
9107         * mini.c, patch-info.h: Signature and patch infos for
9108         Monitor.Enter/Exit trampolines.
9109
9110         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9111
9112         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9113         Monitor.Enter/Exit ASM fastpath for Linux.
9114
9115 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9116
9117         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9118
9119         * objects.cs: Add a new test.
9120         
9121         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9122
9123         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9124         if MONO_LOG_LEVEL is set.
9125
9126         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9127
9128         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9129
9130         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9131         
9132         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9133         of file offsets. Align the sections belonging to the data segment to 
9134         PAGESIZE.
9135
9136 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9137
9138         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9139         elf.h. Port it to amd64.
9140
9141 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9142
9143         * driver.c: Enable SIMD by default.
9144
9145 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9146
9147         * cpu-x86.md: Add prefetch op.
9148
9149         * mini-ops.h: Same.
9150
9151         * mini-x86.c: Same.
9152
9153         * mini.h: Add an enum for simd prefetch modes.
9154
9155         * simd-methods.h: Add prefetch function names.
9156
9157         * simd-intrinsics.c: Add prefetch ops for all vector types.
9158
9159 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9160
9161         * aot-compiler.c (emit_bytes): Speed this up a little.
9162
9163 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9164
9165         * aot-compiler.c: Add JIT time etc. statistics.
9166         
9167         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9168
9169         * mini.h (MonoCompile): Add 'got_offset' field.
9170
9171         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9172         method_got_offsets array.
9173
9174         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9175         wrappers.
9176
9177         * aot-compiler.c (compile_method): Add generic method instances referenced
9178         by the method to the list of methods to be compiled, this is required so if
9179         A<T> references B<T>, and another assembly references A<int>, then it will
9180         also get a copy of B<int>.
9181
9182         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9183         when checking for monitor enter/exit.
9184
9185 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9186
9187         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9188         for Monitor.Enter and Monitor.Exit if enabled.
9189
9190         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9191         Solaris.
9192
9193 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9194
9195         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9196         of an OP_MOVE. Fixes #440046.
9197
9198         * basic-long.cs: Add a new test.
9199
9200 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9201
9202         * mini.h: Add synchronization note for the managed counter-part.
9203
9204         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9205         returns the simd caps of the current cpu.
9206
9207 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9208
9209         * basic-simd.cs: Remove Console.WriteLine.
9210
9211 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9212
9213         * basic-simd.cs: New tests for Vector2ul.
9214
9215 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9216
9217         * simd-intrinsics.c: Add new vector type Vector2ul.
9218
9219 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9220
9221         * basic-simd.cs: New tests for Vector2l.
9222
9223 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9224
9225         * cpu-x86.md: Add long version of most packed int ops.
9226
9227         * mini-ops.h: Same.
9228
9229         * mini-x86.h: Same.
9230
9231         * simd-intrinsics.c: Add new vector type Vector2l.
9232
9233 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9234
9235         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9236
9237         * simd-methods.h: Remove SN_op_BitwiseXor.
9238
9239 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9240
9241         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9242         alignment.
9243
9244 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9245
9246         * basic-simd.cs: Test for Vector2d.
9247
9248         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9249         value.
9250
9251 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9252
9253         * cpu-x86.md: Add double version of all packed float ops.
9254
9255         * mini-ops.h: Same.
9256
9257         * mini-x86.h: Same.
9258
9259         * simd-intrinsics.c: Add new vector type Vector2d.
9260
9261         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9262
9263         * simd-methods.h: Add Duplicate.
9264
9265 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9266
9267         * basic-simd.cs: Test for packing with signed saturation.
9268
9269 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9270
9271         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9272         found in the TYPESPEC table.
9273
9274 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9275
9276         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9277         too.
9278
9279         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9280
9281         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9282         instead of the RVA, since the RVA can be changed by tools like the cil 
9283         stripper.
9284
9285         * method-to-ir.c (mono_method_to_ir2): Ditto.
9286
9287         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9288         (deserialize_variable): Ditto.
9289
9290 2008-10-25  Martin Baulig  <martin@ximian.com>
9291
9292         * debug-mini.c (write_variable): Use
9293         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9294
9295 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9296
9297         * cpu-x86.md: Add unsigned variants of packd and packw.
9298
9299         * mini-ops.h: Same.
9300
9301         * mini-x86.h: Emit the right instruction for packd and packw.
9302         Add unsigned variants of packd and packw.
9303
9304         * simd-intrinsics.c: Packd and packw were used in place of their
9305         unsigned variants. Change that.
9306         Add intrinsics for (Signed)PackWithSignedSaturation.
9307
9308         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9309
9310 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9311
9312         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9313
9314 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9315
9316         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9317
9318         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9319
9320         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9321         sse instructions.
9322
9323         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9324
9325 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9326
9327         * method-to-ir.c, mini.c: Special casing for the synchronized
9328         wrapper for the ldtoken+GetTypeFromHandle case.
9329
9330 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9331
9332         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9333
9334         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9335         created/split bblocks.
9336
9337 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9338
9339         * mini-ops.h: Add packed signed mul high.
9340         
9341         * cpu-x86.md: Same.
9342
9343         * mini-x86.c (mono_arch_output_basic_block): Same.
9344
9345         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9346
9347         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9348
9349 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9350
9351         * basic-simd.cs: Tests for Vector16sb.
9352
9353 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9354
9355         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9356
9357 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9358
9359         * mini-ops.h: Add packed signed min, max and compare greater.
9360         
9361         * cpu-x86.md: Same.
9362
9363         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9364         saturation.
9365
9366         * simd-methods.h: Add CompareGreaterThan.
9367
9368         * simd-methods.h: Remove CompareEquals.
9369
9370         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9371
9372         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9373
9374         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9375         CompareEqual.
9376
9377 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9378
9379         * basic-simd.cs: Fix tests due to change in the API.
9380
9381 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9382
9383         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9384
9385 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9386
9387         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9388
9389         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9390         inst_offset as this has invalid values for LDADDR.
9391
9392 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9393
9394         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9395
9396         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9397
9398 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9399
9400         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9401         for accessing field->data.
9402
9403 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9404
9405         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9406
9407 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9408
9409         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9410
9411         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9412
9413 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9414
9415         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9416         from the cfg mempool.
9417
9418 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9419
9420         * basic-simd.cs: Tests for new methods in Vector8us.
9421
9422 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9423
9424         * mini-ops.h: Add multiply and store high.
9425         
9426         * cpu-x86.md: Same.
9427
9428         * mini-x86.c (mono_arch_output_basic_block): Same.
9429
9430         * simd-methods.h: Same.
9431
9432         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9433         and CompareEqual.
9434
9435 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9436
9437         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9438         mono_class_setup_vtable ().
9439
9440         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9441         mono_class_get_vtable_entry () for accessing klass->vtable.
9442
9443         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9444
9445         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9446         found.
9447
9448         * method-to-ir.c (mono_save_token_info): Don't save references made from
9449         wrappers.
9450
9451         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9452         of generic instances.
9453
9454         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9455
9456 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9457
9458         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9459         OP_JMP depends on the method signature.  Calculate it properly.
9460
9461 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9462         
9463         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9464         called directly.
9465
9466         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9467         instances.
9468         (emit_extra_methods): Add another table mapping method indexes to 
9469         offsets in the extra_method_info table.
9470
9471         * mini.h: Bump AOT file format version.
9472         
9473         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9474         and mono_aot_get_method_from_token () into one function.
9475
9476 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9477
9478         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9479         separate counter.
9480
9481 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9482
9483         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9484         methods.
9485
9486         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9487         disable_aot.
9488
9489         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9490
9491         * mini.h: Bump aot file format version.
9492
9493         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9494         AOT file can contain native code for methods which are not in the METHOD
9495         table. Generate code for non-sharable generic instances of generic methods
9496         found in the METHODSPEC table.
9497         
9498         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9499         encoding generic type handles.
9500
9501         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9502         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9503
9504         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9505         macros + MONO_ADD_INS.
9506
9507         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9508         context as well.
9509
9510         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9511
9512         * mini.h: Bump aot file format version.
9513
9514         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9515
9516 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9517
9518         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9519         platforms, with definable stack alignment value.  Set to 16 now
9520         for all platforms.
9521
9522         * mini.c, mini.h, driver.c: Command line option for disabling
9523         stack alignment.
9524
9525 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9526
9527         * basic-simd.cs: Tests for new methods in Vector4ui.
9528
9529 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9530
9531         * mini-ops.h: Add packed int shuffle.
9532         
9533         * cpu-x86.md: Same.
9534
9535         * mini-x86.c (mono_arch_output_basic_block): Same.
9536
9537         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9538         extract mask, max, min, shuffle.
9539
9540         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9541
9542 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9543
9544         * basic-simd.cs: Tests for new methods in Vector8us.
9545
9546 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9547
9548         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9549         RuntimeTypeHandle, not a TypedReference.
9550
9551 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9552
9553         * simd-intrinsics.c: remove relocations.
9554
9555 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9556
9557         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9558         optimizations from the x86 backend.
9559
9560 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9561
9562         * simd-methods.h, simd-intrinsics.c: debloat method names and
9563         prepare for no relocations.
9564
9565 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9566
9567         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9568         
9569         * cpu-x86.md: Same.
9570
9571         * mini-x86.c (mono_arch_output_basic_block): Same.
9572
9573         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9574         extract mask, max, min and sum of absolute differences.
9575
9576         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9577         method name.
9578
9579 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9580
9581         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9582         Renamed one test for consistency.
9583
9584 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9585
9586         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9587         fix to the code that deal with other blocks.
9588
9589 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9590
9591         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9592
9593 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9594
9595         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9596         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9597         able to process the source reg.
9598
9599 2008-10-16  Martin Baulig  <martin@ximian.com>
9600
9601         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9602
9603         * inssel.brg: Add `OP_HARD_NOP'.
9604
9605         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9606
9607         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9608         `OP_HARD_NOP' instruction when running inside the debugger.
9609
9610         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9611         `OP_HARD_NOP' instruction when running inside the debugger.
9612
9613 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9614
9615         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9616         now works. The issue with the regalloc tripping up no longer
9617         happens.
9618
9619         * simd-intrinsics.c (load_simd_vreg): Same.
9620
9621 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9622         
9623         * basic-simd.cs: Tests for new Vector8ui methods.
9624
9625 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9626
9627         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9628         only for type. This fixes crashes where MonoInst::klass is checked
9629         for ops of type != VTYPE or OBJ.
9630
9631         * simd-intrinsics.c (load_simd_vreg): Same.
9632
9633 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9634
9635         * mini-ops.h: Add ops for packed shuffle/max/avg and
9636         extract mask.
9637         
9638         * cpu-x86.md: Same.
9639
9640         * mini-x86.c (mono_arch_output_basic_block): Same.
9641
9642         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9643         extract mask.
9644
9645         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9646         to emit extract mask op.
9647
9648         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9649         to emit word shuffles.
9650
9651 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9652
9653         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9654         the largest alignment needed by a variable, but at least
9655         sizeof(gpointer).
9656
9657 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9658
9659         * basic-simd.cs: Tests for the fixes in the last commit.
9660
9661 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9662
9663         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9664         no longer handles STACK_PTR input.
9665
9666         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9667
9668         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9669         get_simd_vreg   but handles STACK_PTR input.
9670
9671         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9672         as the input can be an arbitrary pointer.
9673
9674         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9675         LDADDR local optimization directly otherwise use a store op.
9676
9677 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9678
9679         * basic-simd.cs: Tests for dup low and dup high.
9680
9681 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9682
9683         * mini-ops.h: Add dup low and dup high ops.
9684         
9685         * cpu-x86.md: Same.
9686
9687         * mini-x86.c (mono_arch_output_basic_block): Same.
9688
9689         * simd-intrinsics.c (vector4f_intrinsics): Same.
9690
9691 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9692
9693         * basic-simd.cs: Tests for recently added functionality.
9694
9695 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9696
9697         * mini-ops.h: Add remaining sse1 fp ops.
9698         
9699         * cpu-x86.md: Add remaining sse1 fp ops.
9700
9701         * mini-x86.c (mono_arch_output_basic_block): Same.
9702
9703         * mini.h: Add enum for simd FP compare conditions.
9704
9705         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9706
9707         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9708         so the backed can generate the appropriate op.
9709
9710 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9711         This patch squeese one more byte from the SimdIntrinsc struct.
9712
9713         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9714         a a shift amount intead of simply or'ing it.
9715
9716         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9717
9718         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9719         byte so we can have an aditional flags field without increasing struct size.
9720
9721         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9722         against the simd_supported_versions bitmask.
9723
9724         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9725
9726 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9727
9728         * mini.c: remove rawbuffer code (the only use here is unsafe because
9729         it takes locks during signal handling and the kernel now provides much
9730         better info in proc/pid/smaps these days).
9731
9732 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9733
9734         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9735         OP_X86_PUSH_OBJ. Fixes #434620.
9736
9737         * objects.cs: Add a test.
9738         
9739 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9740
9741         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9742         that the packuswb/packusdw don't work with unsigned numbers for what
9743         would be negative numbers in signed format.
9744
9745         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9746         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9747
9748         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9749
9750         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9751
9752         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9753
9754         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9755
9756         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9757         add more ops.
9758
9759         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9760         version as the enum in mini.h.
9761
9762         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9763         for sse3 ops, check the simd_version field if present. This way the code
9764         works with all versions of sse.
9765
9766 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9767
9768         * simd-intrinsics.c: Fixed intrinsic name typo.
9769
9770         * mini.h: Added missing simd exported function.
9771
9772         * basic-simd.cs: Added tests for Vector4ui.
9773         Fixed broken test for Vector16b.
9774
9775 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9776
9777         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9778         the max length to 64.
9779
9780 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9781
9782         * method-to-ir.c: Only do the fast virtual generic method call for
9783         non-wrapper methods.
9784
9785         * mini.h, mini-trampolines.c: The new generic virtual remoting
9786         trampoline handles virtual method calls via the vtable (as done by
9787         the fast virtual generic method calls) to remoting proxies.
9788
9789         * mini.c (mono_jit_create_remoting_trampoline): For generic
9790         methods reate a generic virtual remoting trampoline.
9791
9792         * mini-amd64.h: Enable fast virtual generic method calls again.
9793
9794 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9795
9796         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9797         restore registers when doing tail calls.
9798
9799 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9800
9801         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9802         Vector4ui.
9803
9804 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9805
9806         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9807
9808 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9809
9810         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9811
9812 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9813
9814         * basic-simd.cs: Retrofit for API changes.
9815
9816 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9817
9818         * mini-ppc.c: Handle integer stack arguments for tail calls.
9819
9820 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9821
9822         * optflags-def.h: Removed sse3 optimization.
9823
9824         * driver.c: Same.
9825
9826         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9827         sse3.
9828
9829         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9830
9831         * mini.h: Added enumeration with simd versions.
9832
9833         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9834         for detecting SSE3.
9835
9836         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9837
9838         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9839
9840 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9841
9842         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9843
9844         * basic-simd.cs: Fixed test naming.
9845
9846 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9847
9848         * mini-ops.h: Added ops for packed and saturated math, shifts
9849         and packing/unpacking.
9850
9851         * cpu-x86.md: Added descriptors for the above ops.
9852
9853         * mini-x86.c: Added code to emmit the above ops.
9854
9855         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9856
9857 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9858
9859         * aot-compiler.c (compile_method): Enable AOT for generic code.
9860
9861         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9862
9863 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9864
9865         * mini.c: add a workaround for a common screwup that ends up blamed
9866         to mono (other processes blocking signal delivery).
9867
9868 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9869
9870         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9871         in the LDFLD/STFLD opcodes. Fixes #432673.
9872
9873         * iltests.il.in: Add a new test.
9874
9875 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9876
9877         * mini-arm.c: attach the thread in unmanaged->managed transitions
9878         using delegates (bug #433148).
9879
9880 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9881
9882        * basic-simd.cs: Use new ShuffleSel constants.
9883
9884 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9885
9886         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9887
9888         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9889         only disable simd intrinsics if no sse2 is detected.
9890
9891         * optflags-def.h: Added sse3.
9892
9893         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9894         is disabled.
9895
9896 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9897
9898         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9899         when adding delegate-invoke wrappers.
9900
9901 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9902
9903         * Makefile.am: Reenable the simd tests.
9904
9905 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9906
9907         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9908           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9909           other vreg is allocated to that hreg.
9910
9911         Contributed under MIT/X11 license.
9912
9913 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9914
9915         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9916         yet checked in.
9917
9918 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9919
9920         * basic-simd.cs: New test suite for SIMD intrinsics.
9921
9922         * Makefile.am: Added new tests.
9923
9924 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9925
9926         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9927
9928         * mini-ops.h: Same.
9929
9930         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9931
9932         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9933         using SSE2 aware opcodes.
9934
9935         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9936         is enabled, this code path is only reachable if conversion ops are emmited after
9937         mono_method_to_ir.
9938
9939         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9940
9941         This optimization saves 6 bytes per conversion against the old version.
9942
9943 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9944
9945         * aot-compiler.c (compile_method): Don't skip methods referencing 
9946         generic methods without a corresponding entry in token_info_hash, since
9947         encode_method_ref () can handle all generic methods now.
9948
9949         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9950         generic context is set.
9951         
9952         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9953         generic sharing of LDTOKEN.
9954
9955 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9956
9957         * mini-amd64.h: Temporarily disabled fast virtual generic method
9958         calls because it breaks the System.Runtime.Remoting tests.
9959
9960 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9961
9962         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9963
9964         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9965         so inlining actually works.
9966         (check_inline_caller_method_name_limit): Ditto.
9967
9968 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9969
9970         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9971         64 bit safety (from Olaf Hering and Andreas Farber).
9972
9973 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9974         
9975         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9976         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9977         unused virtual call support code.
9978
9979         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9980         
9981         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9982         which can't use aot trampolines.
9983         (decode_patch): Don't create aot trampolines for methods which can't use
9984         them.
9985
9986         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9987         use aot trampolines.
9988
9989         * mini.h: Bump AOT image format version.
9990         
9991 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9992
9993         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9994         to save_token_info () since cmethod is inflated for constrained calls.
9995
9996         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9997
9998 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9999
10000         * Makefile.am: Add build rules for ppc64.
10001         This avoids the build failing at pedump with unresolved symbols
10002         due to lack of arch_sources. Instead it will now fail earlier
10003         due to lack of cpu-ppc64.md.
10004
10005         Contributed under MIT/X11 license.
10006
10007 2008-10-04  Mark Probst  <mark.probst@gmail.com>
10008
10009         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
10010         tail calls.
10011
10012         * iltests.il.in: Add test case for tail call with many arguments.
10013
10014 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10015
10016         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
10017         to the fast virtual generic method code until the aot case is fixed.
10018
10019 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10020
10021         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
10022
10023 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10024
10025         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10026         thunks.
10027
10028 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10029         
10030         * simd-intrinsics.c: Forgot to add this one.
10031
10032         * mini-codegen.c: Fix macro in case SIMD is not supported.
10033
10034 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10035         
10036         This patch land initial JIT support for simd intrinsics.
10037
10038         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10039
10040         * Makefile.am: Added simd-intrinsics.c
10041
10042         * simd-intrinsics.c: New file with simd instrinsic related
10043         code.
10044
10045         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10046
10047         * cpu-x86.md: Add simd related instructions.
10048
10049         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10050
10051         * driver.c: Added two new --regression variants.
10052
10053         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10054
10055         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10056
10057         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10058         extract some complicated logic to helper functions.
10059
10060         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10061
10062         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10063
10064         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10065         the specialized simplification pass.
10066
10067         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10068
10069         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10070
10071         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10072         table.
10073
10074         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10075         if MONO_ARCH_NEED_SIMD_BANK is defined.
10076
10077         * mini-ops.h: Added the new simd ops.
10078
10079         * mini-x86.c: Added mono_arch_xregname.
10080
10081         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10082
10083         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10084
10085         * mini-x86.h: Define simd related MONO_ARCH macros.
10086
10087         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10088
10089         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10090
10091         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10092         MONO_CLASS_IS_SIMD to deal with simd related IR.
10093
10094         * mini.h (MonoInst): Added spill_var to the backend union.
10095
10096         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10097
10098         * mini.h: Added forward declarations of the new simd fuctions.
10099
10100         * optflags-def.h: Added new optimization names SIMD.
10101
10102         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10103
10104         * regalloc.h: Added support for working with 3 register banks.
10105
10106         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10107
10108         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10109
10110 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10111
10112         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10113
10114 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10115
10116         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10117         instead of one on 64 bit systems.
10118
10119         * method-to-ir.c: Remove unused includes.
10120
10121 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10124         cfg->used_int_regs, since the two are different on arm.
10125
10126 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10127
10128         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10129         mono_method_get_vtable_index() to get the vtable index.
10130
10131 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10132
10133         * method-to-ir.c (mono_method_to_ir2): Don't create native
10134         wrappers for array methods, because they're never called (and if
10135         they were called they wouldn't work).
10136
10137 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10138
10139         * method-to-ir.c (mono_method_to_ir2): Array methods are
10140         special-cased and must not be invoked indirectly via the (M)RGCTX
10141         when generic sharing is turned on.  Fixes #431413.
10142
10143 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10144
10145         * method-to-ir.c: When generic sharing is active, call
10146         non-interface virtual generic methods via the standard trampoline.
10147
10148         * mini-trampolines.c: Handle virtual generic shared methods.
10149
10150         * mini.h, mini-x86.c, mini-x86.h: New argument for
10151         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10152         method thunks and which is the trampoline to call if the lookup
10153         fails.  Enable the virtual generic method thunk for x86.
10154
10155         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10156         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10157         argument but assert that it's NULL, because these archs don't yet
10158         implement the virtual generic method thunk.  Changes in the IMT
10159         thunk data structures.
10160
10161 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10162
10163         * aot-compiler.c (emit_globals): Avoid invalid characters in
10164         the static linking symbol.
10165
10166         * objects.cs: Add a test for the range check optimization. Fix warnings.
10167
10168         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10169         optimization from the current JIT.
10170
10171         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10172         later in decompose_array_access_opts () to allow more optimizations.
10173
10174         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10175         mono_decompose_soft_float () for consistency.
10176
10177         * mini-ops.h: Fix arguments of OP_STRLEN.
10178
10179         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10180         into a separate function.
10181         (reset_cast_details): Ditto.
10182         (handle_unbox): Save cast details. Fixes #431254.
10183
10184         * method-to-ir.c: Remove some obsolete FIXMEs.
10185
10186 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10187
10188         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10189
10190 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10191
10192         * mini-codegen.c: More work on macros to make them
10193         ready for multiple regbanks.
10194
10195 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10196
10197         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10198
10199         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10200
10201 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10202
10203         * mini-codegen.c (mono_spillvar_offset): Proper support for
10204         multiple regbanks.
10205
10206 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10207
10208         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10209         the stack overflow changes.
10210
10211 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10212
10213         * mini-codegen.c: Make all bank macros depend on reg_bank.
10214
10215         * mini-codegen.c (mono_local_regalloc): Make free mask
10216         initialization regbank aware.
10217
10218 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10219
10220         * mini-codegen.c (mono_local_regalloc): Extract callee
10221         mask selection to a function and make it regbank aware.
10222
10223 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10224
10225         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10226         code to deal with many regbanks.
10227
10228 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * mini-codegen.c: More fp->regbank changes.
10231
10232 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10233
10234         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10235         of a hardcoded constant.
10236
10237 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10238
10239         * method-to-ir.c (type_from_stack_type): Fix typo.
10240
10241 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10242
10243         * mini-ia64.c (emit_move_return_value): Convert float return values to
10244         double.
10245
10246         * objects.cs: Add a new test.
10247         
10248         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10249         VARARG methods to fix an assert later.
10250
10251         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10252         end so it at least compiles.
10253
10254 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10255
10256         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10257
10258 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10259
10260         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10261         optimization to a new function (emit_optimized_ldloca_ir) and enable
10262         it for both ldloca and ldloca_s.
10263
10264 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10265
10266         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10267         gshared CASTCLASS code.
10268
10269         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10270         amd64, where the libc stack unwinder encounters stack frames referring to
10271         native code in unmapped memory.
10272
10273         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10274         sharing.
10275
10276         * generics.cs: Add new test.
10277
10278 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10279
10280         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10281         add a check that one of the ARM_FPU_ constants is defined.
10282
10283         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10284         
10285         * mini-exceptions.c: Fix build on non-altstack platforms.
10286
10287         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10288         sharing of vtypes.
10289
10290         * ir-emit.h: Add a comment to NEW_PCONST.
10291
10292         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10293
10294         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10295
10296         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10297         after the changes to MonoJitDomainInfo.
10298
10299 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10300
10301         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10302
10303 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10304
10305         * mini-ppc.c: Compiler warning fixes.
10306
10307 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10308
10309         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10310         for pinvokes.
10311
10312 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10313
10314         * exceptions-ppc.c, mini-ppc.h: Compile
10315         mono_arch_handle_altstack_exception() on Darwin, too.
10316
10317 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10318
10319         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10320         work on archs which don't have generic sharing implemented, only
10321         without the vtable_arg.
10322
10323 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10324
10325         * mini.c: Added comment explaining why delegate ctor icall
10326         wrappers are compiled.
10327
10328 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10329
10330         * mini.c: Don't produce trampolines to delegate ctor icall
10331         wrappers but compile them upfront.
10332
10333 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10334
10335         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10336         runtime-set function when going back to managed code. Currently this
10337         is used to set back the protection on the soft ovf pages and/or to
10338         throw the stack overflow exception that happened in unmanaged code.
10339
10340 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10341
10342         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10343         runtime-set function when going back to managed code. Currently this
10344         is used to set back the protection on the soft ovf pages and/or to
10345         throw the stack overflow exception that happened in unmanaged code.
10346
10347 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10348
10349         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10350         the support code for restoring stack protection after stack overflows
10351         that happen in unmanaged code. Don't set the exec permission on the
10352         soft overflow area.
10353
10354 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10355
10356         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10357         delegate->method_ptr is set. Fixes #428054.
10358
10359 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10360
10361         * tests.cs: Rename to ratests.cs.
10362
10363         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10364         emit_get_rgctx_... functions.
10365
10366 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10367
10368         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10369
10370 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10371
10372         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10373         before asserting that method is sharable.
10374
10375 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10376
10377         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10378         whether method needs a static RGCTX wrapper used instead of
10379         complex conditions.
10380
10381         * generic-sharing.c, mini.h: A few functions moved to
10382         metadata/generic-sharing.c.
10383
10384 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10385
10386         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10387         Generic code sharing for value types, which essentially means
10388         treating value type methods like static methods.  The RGCTX is
10389         passed in the same way.
10390
10391 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10392
10393         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10394         opcode when creating multi-dimensional arrays of open types.
10395
10396         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10397         open generic types.
10398
10399         * generics.cs: Add a test.
10400
10401         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10402
10403 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10404
10405         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10406
10407         * mini.c (mini_method_compile): Set it when running under the debugger. 
10408
10409         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10410         vreg optimization if the flag is set.
10411
10412         * driver.c (mono_main): Add --attach= option to pass options to
10413         the attach agent.
10414
10415         * mini.c (sigquit_signal_handler): Start the attach agent.
10416
10417         * ssapre.c: Disable this to save space since it is not yet ported to
10418         linear IR.
10419
10420         * regalloc2.c: Disable this to save space.
10421
10422         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10423
10424 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10425
10426         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10427         the -v option useful again.
10428
10429 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10430
10431         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10432         --break-at-bb.
10433
10434         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10435         arrays of arrays. Fixes #428406.
10436
10437         * method-to-ir.c (mini_emit_castclass): Ditto.
10438
10439         * objects.cs: Add new test.
10440         
10441 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10442
10443         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10444         was wrong at it choked against target_type_is_incompatible for byref types.
10445
10446 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10447
10448         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10449         places.
10450
10451 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10452
10453         * mini-exceptions.c: update a few more exceptions-related counters.
10454
10455 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10456
10457         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10458         new functions to allocate from persistent mempools.
10459
10460 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10463         multiple register banks in the future.
10464
10465         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10466
10467 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10468
10469         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10470
10471         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10472
10473         * mini.h: Export type_to_eval_stack_type.
10474
10475         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10476         is only ins->klass of byref types.
10477
10478 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10479
10480         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10481         (mini_emit_memcpy2): Ditto.
10482
10483         * mini-amd64.c: Fix a warning.
10484
10485 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10486
10487         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10488         linking.
10489
10490 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10491
10492         * method-to-ir.c: Extract stloc micro-optimization to a
10493         function and apply it to all cases.
10494
10495 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10496
10497         * method-to-ir.c: Don't fail generic code sharing in cases we
10498         already support.
10499
10500 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10501
10502         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10503
10504 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10505
10506         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10507         implementation.
10508
10509 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10510
10511         * trace.c: make tracing more useful and correct, with per-thread
10512         id and indent info.
10513
10514 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10515
10516         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10517         doing a method call and the argument is an R4.
10518
10519 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10520
10521         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10522         generic methods.
10523
10524 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10525
10526         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10527
10528 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10529
10530         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10531         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10532
10533 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * driver.c: Add a --agent argument (not supported yet) to load managed
10536         agent assemblies before loading the main assembly, similarly to how the
10537         Java VM handles agents.
10538
10539 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10540
10541         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10542         function to do stack layout of local variables.
10543
10544 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10545
10546         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10547         calculation.
10548
10549 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10550
10551         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10552         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10553         JIT if DISABLE_JIT is defined.
10554
10555         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10556         defined.
10557
10558 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10559
10560         * iltests.il.in: Disable the fconv test on PPC (the result is
10561         undefined according to ECMA).
10562
10563 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10564
10565         * iltests.il.in: Enable tail call tests for PPC.
10566
10567         * mini.h: Add variable for storing incoming valuetype argument
10568         addresses for tail calls.
10569
10570         * mini-ppc.c: Implement valuetype arguments and return values for
10571         tailcalls on Linux.
10572
10573 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10574
10575         * mini-ppc.c: Partially implement tail calls (struct arguments and
10576         return values not supported).
10577
10578         * method-to-ir.c: Enable tail calls on PPC.
10579
10580 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10581
10582         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10583         runtime-invoke wrappers to work around the problem of them getting
10584         assigned to a random class.
10585
10586         * aot-runtime.c (mono_aot_get_method): Ditto.
10587         
10588 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10589
10590         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10591         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10592
10593 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10594
10595         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10596         until they're implemented properly.
10597
10598         * exceptions-ppc.c: Use arch-independent exception-handling code
10599         instead of custom one.
10600
10601         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10602         for Linear IR.
10603
10604         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10605
10606         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10607         applies when __powerpc__ is defined.
10608
10609 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10610
10611         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10612         methods to their code to avoid computing the full name of wrappers and
10613         doing a lookup in a string hash table.
10614
10615 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10616
10617         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10618         we identify bblocks before method_to_ir () is ran.
10619
10620         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10621         Also avoid optimizing branches pointing to themselves.
10622
10623         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10624
10625 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10626
10627         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10628
10629 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10630
10631         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10632         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10633         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10634         'buf'.
10635
10636         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10637         jumped to the same entry in plt_jump_table.
10638
10639 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10640
10641         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10642         dynamic images.
10643
10644 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10645
10646         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10647         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10648         #421807.
10649
10650 2008-08-29  Geoff Norton  <gnorton@novell.com>
10651
10652         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10653         segment, and doesn't properly handle .space as .text.  Fixes
10654         AOT Mach/ARM
10655
10656 2008-08-29  Geoff Norton  <gnorton@novell.com>
10657
10658         * mini.c: Disable the mach exception handler when running on 
10659         ARM
10660
10661 2008-08-29  Geoff Norton  <gnorton@novell.com>
10662
10663         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10664         globals on Darwin/ARM
10665
10666 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10669         since too many things depend on it. Instead, call 
10670         mono_runtime_set_no_exec ().
10671         
10672         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10673         the new JIT.
10674
10675         * aot-compiler.c: Add an 'asm-only' AOT option.
10676
10677         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10678                 
10679         * aot-compiler.c (compile_method): Disable gshared support for now as it
10680         doesn't yet work.
10681
10682 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10683
10684         * mini-amd64.h : Fix a compiler warning.
10685
10686         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10687           Changed to use a callback function to retrieve the unwind info.
10688           This avoids problems observed when code blocks were removed by
10689           unloading an app domain.
10690
10691         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10692           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10693           to work properly.
10694
10695         Contributed under MIT/X11 license.
10696
10697 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10698
10699         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10700           case to keep the stack aligned to 8.
10701
10702         Contributed under MIT/X11 license.
10703
10704 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10705
10706         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10707         avoid repeated linear searches.
10708
10709 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10710
10711         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10712         methods it can't handle.
10713         
10714         * aot-compiler.c (add_method): Avoid adding a method twice.
10715         (add_wrappers): Add runtime invoke wrappers for all methods.
10716
10717         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10718         function to create an aot-compatible version of this trampoline.
10719
10720         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10721
10722 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10725
10726         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10727         with a generic sharing failure.
10728
10729         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10730
10731         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10732         CEE_RETHROW. Fixes #419634.
10733
10734         * mini.c (mono_method_to_ir): Ditto.
10735
10736         * exceptions.cs: Add a new test.
10737         
10738         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10739         to mono_type_stack_size_internal () since some callers might not pass in
10740         an rgctx.
10741
10742         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10743         instrument_prolog. Fixes #419878.
10744
10745         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10746         doubles in soft float mode volatile.
10747
10748 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10749
10750         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10751
10752         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10753         to handle soft float correctly.
10754
10755         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10756         the fast path.
10757
10758         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10759
10760         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10761         to sp, since the generics catch code requires it.
10762
10763         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10764         copying.
10765
10766         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10767         mono_arch_emit_imt_argument ().
10768
10769         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10770
10771         * mini-arm.c tramp-arm.c: Generic sharing updates.
10772
10773 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10774
10775         * mini-arm.c: Fix the arm build.
10776
10777         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10778         handling enums, generic instances and generic sharing.
10779         (mini_type_stack_size_full): Ditto.
10780
10781         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10782         
10783         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10784
10785         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10786
10787         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10788         trampolines.
10789
10790         * mini-arm.c: Various small generic sharing changes.
10791
10792         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10793         this for x86.
10794         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10795         custom code.
10796
10797         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10798         helper function to return a generic class init trampoline.
10799
10800         * method-to-ir.c mini.c: Use it.
10801         
10802         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10803         arch-specfic function to return a generic class init trampoline.
10804
10805         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10806         the GENERIC_CLASS_INIT custom code.
10807
10808         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10809         a fatal error, not a sharing failure.
10810
10811         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10812         needed.
10813
10814         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10815         trampoline argument from MONO_ARCH_VTABLE_REG.
10816
10817         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10818         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10819         argument, and pass the vtable in VTABLE_REG.
10820
10821         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10822         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10823         argument, and pass the vtable in VTABLE_REG.
10824         (mono_arch_create_trampoline_code_full): Remove some special casing for
10825         the rgctx fetch trampoline.
10826
10827         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10828         Fixes #419273.
10829
10830         * iltests.il: Add a test for it.
10831
10832 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10833
10834         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10835
10836         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10837         no longer needed.
10838
10839         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10840         use mono_jit_info_table_find () to avoid recursion.
10841         (mono_delegate_trampoline): Add a sync wrapper here.
10842
10843         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10844         here.
10845
10846         * mini.c (mono_method_to_ir): Ditto.
10847         
10848         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10849         add_sync_wrapper argument. Don't add a sync wrapper here.
10850         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10851
10852         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10853         
10854 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10855
10856         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10857           of nonvolatile registers back from MonoContext to CONTEXT.
10858
10859         Contributed under MIT/X11 license.
10860
10861 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10862
10863         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10864           arguments on Winx64 there are only 4 argument registers.  For this
10865           logic to work the last argument must be pulled from the stack.  
10866
10867         Contributed under MIT/X11 license.
10868
10869 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10870
10871         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10872
10873         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10874         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10875         encode/decode_method_ref ().
10876
10877         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10878
10879         * aot-runtime.c (decode_patch): Ditto.  
10880
10881         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10882         MONO_PATCH_INFO_METHOD.
10883
10884         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10885         MonoGenericJitInfo.
10886
10887         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10888         MonoGenericJitInfo.
10889
10890         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10891
10892         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10893         one from the caller.
10894
10895         * aot-runtime.c (decode_generic_inst): New function to decode and
10896         return a interned generic inst.
10897         (decode_klass_ref): Use it.
10898         (decode_method_ref): Ditto.
10899
10900         * aot-compiler.c (emit_exception_debug_info): Save 
10901         jinfo->has_generic_jit_info too.
10902
10903 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10904
10905         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10906
10907         * iltests.il.in: Add a test for fconv_to_i.
10908
10909         * liveness.c: Disable the liveness2 pass for now to save space.
10910
10911         * regalloc2.c: Include mempool-internals.h to fix warnings.
10912
10913         * aot-compiler.c (encode_method_ref): Encode the context of generic
10914         instance methods.
10915
10916         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10917         the context saved in the aot file.
10918
10919         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10920
10921         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10922
10923         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10924         volatile so they won't be optimized away.
10925
10926 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10927
10928         * ssa.c:
10929         * ssa2.c:
10930         * mini.c:
10931         * regalloc2.c:
10932         * dominators.c: Remove duplicated functions that now are in
10933         mempool-internals.h.
10934
10935 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10936
10937         * aot-compiler.c: Fix warnings.
10938
10939         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10940
10941         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10942
10943         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10944         as the patch type.
10945
10946         * mini.c (mono_resolve_patch_target): Ditto.
10947         
10948         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10949         (encode_klass_ref): Add support for encoding VARs/MVARs.
10950
10951         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10952
10953         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10954         the handling of the got entries into a separate 'decode_got_entry' function.
10955         Add support for RGCTX_FETCH.
10956
10957         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10958         clobbered by the trampoline code.
10959
10960         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10961         not clobbered by the indirect calling code.
10962
10963 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10966         to fix the build.
10967
10968 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10969
10970         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10971         signature using the compilation mempool otherwise we would leak it.
10972
10973 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10974
10975         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10976         mono_emit_abs_call ().
10977
10978         * patch-info.h: Add GENERIC_CLASS_INIT.
10979
10980         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10981
10982         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10983         as their target as a near call.
10984
10985         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10986         ABS handling code.
10987         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10988
10989         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10990         call to a runtime function described by a patch.
10991
10992         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10993         mono_emit_abs_call, this has the advantage that the ABS handling code in
10994         mono_codegen () can handle them both, and can handle other stuff in the
10995         future without additional code.
10996
10997         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10998         entry.
10999         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
11000         abs addresses.
11001
11002         * mini.h: Add missing bblock related prototypes.
11003
11004         * mini.h (MonoCompile): Remove unused reverse_inst_list and
11005         reverse_inst_list_len fields.
11006
11007         * mini.c: Refactor this file a bit by moving branch optimizations to 
11008         branch-opts.c.
11009
11010         * method-to-ir.c: Merge generic sharing changes missed earlier.
11011
11012         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
11013
11014         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
11015         shared patches. Process METHODCONST as a shared patch.
11016
11017         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
11018         as it crashes on the 2.0 mscorlib.
11019
11020         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
11021         to cause crashes.
11022         
11023         * aot-compiler.c: Use is_plt_patch () in a few additional places.
11024         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11025         by IMT.
11026
11027         * aot-compiler.c: Reorganize the got handling code to be a bit more
11028         understandable.
11029
11030 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11031
11032         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11033         mono_patch_info_equals/hash, and use it to massively simplify
11034         get_plt_index ().
11035
11036         * mini.c (mono_patch_info_hash): Simplify this and add support for
11037         more patch types.
11038
11039         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11040
11041         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11042         handling code, since an offset is not enough to identify a trampoline.
11043
11044         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11045
11046 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11047
11048         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11049
11050         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11051
11052         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11053
11054         * decompose.c: PPC decompositions for various ops.
11055
11056         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11057
11058 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11059
11060         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11061         call the generic trampoline code using a call, instead of a jump, to
11062         remove some special casing from the generic trampoline code.
11063
11064         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11065         (mono_codegen): Ditto.
11066
11067         * aot-compiler.c aot-runtime.c: Ditto.
11068
11069         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11070
11071         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11072         helper function to find the offset corresponding to a lazy fetch trampoline.
11073
11074         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11075         when doing generic sharing.
11076
11077         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11078         places.
11079         
11080         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11081         mini-trampolines.c to be with the other trampoline creation functions.
11082
11083         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11084         as it is equal to method->signature in most cases, add a 
11085         mono_emit_method_call_full variant which takes a signature and an imt
11086         argument as well.
11087
11088 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11089
11090         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11091         to this function, since it could be computed easily from the method 
11092         argument.
11093         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11094         more.
11095
11096         * method-to-ir.c mini.c: Remove references to 
11097         compile_generic_method_wo_context.
11098
11099         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11100         generic method calls.
11101         
11102         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11103         dimensional non-szarrays.
11104
11105         * mini.c (mini_init): Register mono_array_new_1.
11106
11107         * jit-icalls.c (mono_array_new_1): New jit icall.
11108
11109         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11110         pointing to the method.
11111
11112         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11113         method addresses belonging to METHOD_JUMP patches in the 
11114         jump_target_got_slot_hash.
11115         (mono_aot_load_method): Ditto.
11116
11117         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11118         METHOD_JUMP patches.
11119
11120         * mini.c (mini_create_jit_domain_info): New helper function which 
11121         initializes/frees domain->runtime_info.
11122         (mini_free_jit_domain_info): Ditto.
11123         (mini_init): Install the domain hook functions with the runtime.
11124
11125         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11126         information maintained by the JIT.
11127
11128         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11129         insertion into jump_table_hash into mono_codegen (), also implement proper
11130         locking.
11131
11132         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11133         tail calls, it is already done by the aot code.
11134         
11135         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11136         mechanism on amd64.
11137
11138         * iltests.il.in: Make the jmp test a bit more complex.
11139
11140         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11141         generic instances which doesn't have a token.
11142
11143         * aot-runtime.c (decode_method_ref): Ditto.
11144         
11145         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11146         can handle this case now.
11147         (handle_box): Ditto.
11148
11149 2008-08-15  Geoff Norton  <gnorton@novell.com>
11150
11151         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11152         debugging check.
11153
11154 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11155
11156         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11157         calling generic methods.
11158
11159         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11160
11161         * aot-runtime.c (decode_patch_info): Ditto.
11162
11163         * mini.c (mono_resolve_patch_target): Ditto.
11164         
11165         * patch-info.h: Add METHOD_RGCTX.
11166
11167         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11168
11169 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11172         arguments in registers.
11173
11174         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11175         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11176
11177         * mini.c (mini_method_compile): Abort aot compilation for generic
11178         methods if generic sharing is disabled.
11179         
11180         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11181         an mrgctx.
11182
11183         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11184         requiring an mrgctx.
11185
11186         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11187         store instructions when converting a vcall to a normal call.
11188
11189         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11190         mono_arch_find_jit_info.
11191
11192 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11193
11194         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11195         avoid calling mono_method_full_name () for every method even if the
11196         env var is not set.
11197         (check_inline_caller_method_name_limit): Ditto.
11198
11199 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11202         assemblies in one run.
11203
11204         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11205         skipped methods if it is not 0.
11206
11207         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11208
11209 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11210
11211         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11212           MONO_ARCH_HAVE_UNWIND_TABLE.
11213
11214         Contributed under MIT/X11 license.
11215
11216 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11217
11218         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11219           from default optimizaton list on Winx64.
11220
11221         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11222
11223         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11224           the LMF from the MonoJitTlsData structure.
11225
11226         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11227
11228         Contributed under MIT/X11 license.
11229
11230 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11231
11232         * mini.c (sigsegv_signal_handler): Fix the build.
11233
11234         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11235         assembly->aot_module.
11236
11237         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11238         hash table. This simplifies and speeds up a lot of code, and fixes support
11239         for .netmodules.
11240
11241         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11242         with the runtime.
11243
11244         * mini-exceptions.c: Ditto.
11245         
11246         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11247         'native_offset' argument, since these are computed in the 
11248         mono_find_jit_info () function.
11249
11250         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11251         is used by exceptions-ppc.c.
11252
11253         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11254         mono_arch_find_jit_info ().
11255         
11256         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11257         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11258         generic code in mini-exceptions.c.
11259
11260 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11261
11262         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11263
11264         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11265         
11266         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11267         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11268         called while holding the loader lock. Fixes #415608.
11269         (mono_aot_get_method_from_token_inner): Ditto.
11270
11271 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11272
11273         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11274         to reduce differences between this and the generic implementation in
11275         mini-exceptions.c.
11276         (ves_icall_get_frame_info): Ditto.
11277
11278         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11279
11280         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11281         longer neccesarry.
11282
11283         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11284         mono_arch_get_call_filter () and make it non-static, for consistency with the
11285         other architectures.
11286
11287 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11288
11289         * mini.c:
11290         * local-propagation.c:
11291         * mini-x86.c: Correct the name of arch defines.
11292
11293 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11294
11295         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11296         NO_EMULATE_LONG_SHIFT_OPS define.
11297
11298 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11299
11300         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11301         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11302
11303         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11304         MACH fixes. Merged from the 2.0 branch.
11305
11306         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11307
11308         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11309         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11310
11311         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11312
11313         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11314         mono_marshal_get_native_wrapper () signature changes.
11315
11316 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11317
11318         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11319         conversion bug under arm.
11320
11321 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11322
11323         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11324
11325         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11326         with overflow checking.
11327
11328 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11329
11330         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11331         to the genmdesc.pl file
11332
11333 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11336         arg_array in the soft-float versions of the LOAD/STORE macros.
11337
11338         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11339         implementation.
11340
11341         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11342
11343 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11344
11345         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11346         a float HFA. Fixes #413621.
11347
11348 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11349
11350         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11351         frame_size to args_size. Fixes build.
11352
11353 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11354
11355         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11356         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11357
11358         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11359         the stack are not unaligned. Fixes #413247.
11360         
11361 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11362
11363         * mini.c: update jitted methods performance counters.
11364
11365 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11366
11367         * mini-exceptions.c: increase the exceptions thrown performance
11368         counter in mono_handle_exception ().
11369
11370 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11371
11372         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11373         can work with netmodules.
11374
11375 2008-07-28  Geoff Norton  <gnorton@novell.com>
11376
11377         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11378         regression tests.
11379
11380 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11381
11382         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11383         correct place.
11384
11385 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11386
11387         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11388           The float param registers and other param registers must be the 
11389           same index on Windows x64.
11390
11391         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11392           ArgValuetypeAddrInIReg argument case.  Setting the argument
11393           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11394
11395         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11396           variable computed above as the copy length for arguments of storage
11397           type ArgValuetypeAddrInIReg.
11398
11399         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11400           ArgValuetypeAddrInIReg argument case.  This case will rely on
11401           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11402
11403         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11404           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11405           jump and tail call instructoins as they do not follow the typical call behavior.
11406
11407         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11408           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11409           local variable and pass the local variable by reference to the called method.
11410
11411         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11412           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11413           of a struct is passed in a register it must be saved with the other
11414           volatile argument on the stack.
11415
11416         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11417           frame pointer the stack adjustment value must be saved to the unwind 
11418           info structure.
11419
11420         Contributed under MIT/X11 license.
11421
11422 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11423
11424         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11425         which got lost in the merge.
11426
11427 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11428
11429         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11430         build.
11431
11432         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11433         
11434         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11435         icalls, since they won't be patched.
11436
11437         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11438         different code sequence when running under valgrind to prevent some valgrind
11439         errors.
11440
11441         * iltests.il.in: Add new regression test.
11442
11443         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11444         end with a throw.
11445
11446         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11447         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11448
11449         * iltests.il.in: Add new test.
11450
11451         * aot-compiler.c: Fix some warnings.
11452
11453         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11454         Fixes #412494.
11455
11456 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11457
11458         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11459         (mini_usage_jitdeveloper): Add a missing --wapi option.
11460
11461 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11462
11463         * mini-codegen.c: Simplify the is_fp macros.
11464         (free_up_ireg): Remove, use free_up_reg instead.
11465         (free_up_reg): Fix the fp case.
11466
11467 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11468
11469         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11470         lowered earlier.
11471
11472         * exceptions-x86.c: Merge some changes which seemed to have got lost
11473         in the linear-ir merge.
11474
11475         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11476
11477         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11478         long vreg volatile even if the variable was already created.
11479
11480         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11481         volatile variables.
11482
11483 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11484
11485         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11486
11487         * mini.c (mono_jit_compile_method_inner): Add support for 
11488         MONO_EXCEPTION_BAD_IMAGE.
11489
11490         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11491         mini_method_get_context () returns NULL. Fixes #356531.
11492
11493         * mini.c (mono_method_to_ir): Ditto.
11494         
11495         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11496         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11497
11498 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11499
11500         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11501         in the LDFTN implementation.
11502
11503 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11504
11505         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11506         code, patch calls to icalls, too, even if they're not in the
11507         shared generic code hash.  Fixes #411962.
11508
11509 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11510
11511         * cpu-x86.md: Increase the length of the fcall opcodes.
11512
11513         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11514         calls returning floats.
11515
11516         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11517         on NEWARR.
11518         
11519         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11520         missed earlier.
11521
11522         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11523         into the domain->method_code_hash.
11524
11525         * aot-compiler.c: Fix win32 build.
11526
11527         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11528         
11529         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11530         gshared NEWARR implementation.
11531
11532         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11533
11534         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11535         can be used outside of method_to_ir.
11536
11537         * mini.h (MonoCompile): Add arg_types field.
11538
11539         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11540         
11541         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11542         the values of the local arg_array and param_types array.
11543
11544 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11545
11546         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11547         got accesses might only get generated later when NEWOBJ is decomposed.
11548         
11549         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11550         looking up the native code of the target method when a delegate is called
11551         for the first time.
11552
11553         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11554         optimization.
11555
11556         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11557
11558         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11559         AOT work on platforms without a working dlsym implementation.
11560
11561         * mini.h: Bump AOT image format version.
11562         
11563 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11564
11565         * mini-exceptions.c: Free a MonoType with
11566         mono_metadata_free_type() instead of g_free().
11567
11568         * aot-runtime.c: Free a MonoType.
11569
11570 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11571
11572         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11573         optimization.
11574
11575         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11576         fp stack on x86.
11577
11578 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11579         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11580         profiler hook.
11581
11582 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11583
11584         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11585         NEWOBJ calls on valuetypes.
11586
11587         * iltests.il.in: Add new test.
11588
11589         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11590
11591 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11592
11593         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11594         is no longer needed.
11595
11596         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11597         non register sized integer arguments.
11598         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11599         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11600         emit_memcpy2 ().
11601
11602         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11603         CEE_MONO_RETOBJ.
11604         
11605         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11606         two a binop with different sized arguments is emitted.
11607
11608         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11609         instruction in the ins==NULL case.
11610
11611 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11612
11613         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11614
11615         * mini-x86.c: Fix osx build.
11616
11617         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11618         opcodes as well.
11619
11620         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11621         instruction for non int sized variables.
11622
11623         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11624         implementation.
11625
11626 2008-07-23  Robert Jordan  <robertj@gmx.net>
11627
11628         * method-to-ir.c: Fix MSVC build.
11629
11630 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11631
11632         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11633         a non int sized type, widen it to an int since newer versions of gcc seem to
11634         generate code which needs this.
11635
11636         * ssa2.c abcremoval2.c: Fix warnings.
11637
11638         * *: Merge the Linear IR branch.
11639
11640         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11641         the ChangeLog file there describes all the changes done over the years. 
11642         Further documentation can be found at www.mono-project.com/Linear_IL.
11643
11644 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11645
11646         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11647           The float param registers and other param registers must be the 
11648           same index on Windows x64.
11649
11650         Contributed under MIT/X11 license.
11651
11652 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11653
11654         * mini.c: Make the previous fix GC safe.
11655
11656 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11657
11658         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11659
11660 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11661
11662         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11663           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11664           ArgValuetypeAddrInIReg instead.
11665
11666         Contributed under MIT/X11 license.
11667
11668 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11669
11670         * mini-codegen.c (get_register_spilling): Fix a warning.
11671
11672 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11673
11674         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11675         for types which the initialization fails. Raises the provided exception
11676         at the right stop after cleanup.
11677
11678 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11679
11680         * aot-compiler.c: Free most of the memory allocated during compilation.
11681
11682         * mini.c (mini_parse_debug_options): Fix a leak.
11683         
11684         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11685         during aot compilation.
11686
11687 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11688
11689         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11690         it has too much register pressure.
11691
11692 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11693
11694         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11695
11696 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11697
11698         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11699         on x86.
11700
11701         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11702         on amd64 similar to the way it is done on arm.
11703
11704         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11705
11706         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11707         consistency, normalize error messages, avoid loading aot-only modules in
11708         normal mode.
11709
11710         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11711         for consistency.
11712
11713         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11714
11715 2008-07-11  Martin Baulig  <martin@ximian.com>
11716
11717         * debug-debugger.h
11718         (MonoDebuggerInfo): Add `interruption_request'.
11719
11720 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11721
11722         * aot-compiler.c (emit_plt): Remove some dead code.
11723
11724         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11725
11726         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11727         return the plt info offset belonging to a given plt entry.
11728
11729         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11730         mono_aot_get_plt_info_offset.
11731         
11732         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11733         similar to the amd64 code by makeing jumps through a separate jump table 
11734         instead of embedding the jump addresses into the code.
11735
11736 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11737
11738         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11739         method.
11740
11741 2008-07-10  Martin Baulig  <martin@ximian.com>
11742
11743         * mini.c (mini_method_compile): Disable generics sharing when
11744         running in the debugger.
11745
11746 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11747
11748         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11749
11750         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11751         the local register allocator from running out of registers on x86 when 
11752         using aot.
11753
11754 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11755
11756         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11757         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11758         C4146.
11759
11760         Contributed under MIT/X11 license.
11761
11762 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11763
11764         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11765         speed up the assembler.
11766
11767 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11768
11769         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11770         support.
11771
11772         * mini.c: Move the soft float handling macros a bit earlier, add 
11773         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11774         place.
11775
11776         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11777
11778         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11779         read-only to help catch code allocation requests.
11780         
11781         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11782         and turn it off when using --aot-only or when compiling with --aot=full.
11783
11784         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11785         jump table for switches from the normal domain mempool, not the code
11786         manager.
11787
11788         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11789         unbox trampoline which handles aot-only mode too.
11790
11791         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11792         an AOTed unbox trampoline.
11793
11794         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11795
11796 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11797
11798         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11799         ""
11800
11801         Contributed under MIT/X11 license.
11802
11803 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11804
11805         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11806           the unwind information for the method at the end of the allocated block.
11807           
11808         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11809           MonoCompileArch to hold the unwind info for SEH on Winx64
11810         
11811         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11812           frame pointer info for the method being compiled.
11813           
11814         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11815           the call to mono_exception_from_token.
11816           
11817         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11818           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11819           information is stored a the end of the method block because it is all 32-bit offset based.
11820
11821         Contributed under MIT/X11 license.
11822
11823 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11824
11825         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11826
11827         * wapihandles.c: Fix warnings.
11828
11829         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11830         mode.
11831
11832         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11833         mono_jit_compile_method in aot-only mode since that calls the type 
11834         initializer.
11835         
11836         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11837         get_delegate_invoke_impl in aot-only mode.
11838
11839         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11840
11841 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11842
11843         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11844
11845         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11846         is on by default.
11847
11848         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11849
11850         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11851         init trampoline from the AOT file as well.
11852
11853         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11854         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11855         code.
11856
11857         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11858         mono_init.
11859
11860         * exceptions-amd64.c: Add _full variants for the remaining exception code
11861         creation functions as well, allow emission of relocatable code, remove
11862         caching since that is now done by the caller.
11863
11864         * mini-exceptions.c: Add _full variants for the remaining exception code
11865         creation functions as well, add aot-only support.
11866
11867         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11868         if we can determine a proper token for them.
11869         (add_wrappers): Add a few more wrappers.
11870         (emit_method_code): Remove some dead code.
11871         (emit_trampolines): Emit exception code too.
11872
11873         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11874
11875         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11876         mono_array_new_va which avoids varargs.
11877
11878         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11879
11880         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11881         mono_arch_create_specific_trampoline () in all places.
11882
11883         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11884         a bit so it can be used for other things as well.
11885         
11886         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11887         on demand as well.
11888
11889         * exceptions-amd64.c: Rename the caching from the exception code creation
11890         functions, it is done by the caller instead.
11891         
11892         * exceptions-amd64.c: Change the signature of the exception code creation 
11893         functions to allow the creation of relocatable code later.
11894
11895         * mini-exceptions.c: Add a set of functions to query the various 
11896         runtime-generated exception functions.
11897
11898         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11899         mono_arch_.. () functions.
11900         
11901 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11902
11903         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11904
11905         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11906
11907         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11908         (mini_get_vtable_trampoline): Ditto.
11909
11910         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11911         code in the AOT case by returning the code size and a list of relocations to
11912         the caller.
11913
11914         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11915
11916 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11917
11918         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11919           clean the stack.
11920
11921         Contributed under MIT/X11 license.
11922
11923 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11924
11925         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11926         so the buffer size can be computed correctly. Fixes #404735.
11927
11928         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11929         normally as cfg->debug_info is already freed.
11930
11931 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11932
11933         * mini-amd64.c: For calls returning vtypes in registers, don't store
11934         the return address on the stack, instead allocate a separate local for
11935         it. Fixes #404729.
11936
11937 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11938
11939         * mini-trampolines.c, mini.h: Add an argument to
11940         mono_create_jit_trampoline_in_domain() for turning off the adding
11941         of the sync wrapper.
11942
11943         * mini.c: Use the JIT trampoline without sync instead of
11944         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11945         be patched.
11946
11947 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11948
11949         * driver.c: Turn on GSHARED optimization by default.
11950
11951 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11952
11953         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11954         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11955
11956         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11957         create a variant of the generic trampoline code callable from AOTed trampolines.
11958
11959         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11960         trampoline code callable from AOTed trampolines.
11961
11962         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11963
11964 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11965
11966         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11967         pass-through manner.
11968
11969         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11970         and don't fail sharing for them anymore.
11971
11972         * mini-exceptions.c: Handle exceptions in shared generic methods.
11973
11974         * generic-sharing.c: When checking the context of a generic
11975         method, also check its class's context.  Don't treat wrappers as
11976         sharable.
11977
11978         * mini-trampolines.c: Some code factored out to
11979         metadata/generic-sharing.c.  Handle the MRGCTX case.
11980
11981         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11982         we must deal with the method being of another instantiation of the
11983         class.  Add static rgctx invoke wrappers to generic methods.
11984
11985 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11986
11987         * mini.c: Provide all jit infos of generic shared methods with a
11988         generic jit info.
11989
11990         * mini-exceptions.c: Handle the new situation that a generic info
11991         might be available, but not info about the this/vtable/mrgctx
11992         variable.
11993
11994 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11995
11996         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11997         generic methods.
11998
11999 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
12000
12001         * dominators.c (check_dominance_frontier): Fix a warning.
12002
12003         * mini.h: Add some missing prototypes.
12004
12005         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
12006
12007         * driver.c (mono_jit_init_version): Correct the comments since the first
12008         argument should be the name of the root domain, not a filename.
12009
12010         * aot-runtime.c (make_writable): Error out if this is called while running
12011         with --aot-only.
12012         (load_aot_module): Ditto.
12013
12014         * aot-compiler.c: Really fix the computation of method indexes.
12015
12016         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
12017         optimizations as this is no longer called frequently.
12018
12019         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
12020         method and the invoke impl code and pass it to the delegate trampoline instead of
12021         just the delegate class.
12022
12023 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
12024
12025         * aot-compiler.c: Fixup the computation of method indexes.
12026         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12027         the method builder infrastructure.
12028
12029         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12030         has no header.
12031
12032         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12033         mode, load the method right away instead of creating a trampoline.
12034
12035         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12036
12037         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12038         some checks a bit.
12039
12040 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12041
12042         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12043         (mono_aot_load_method): Use method_index instead of method->token.
12044
12045         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12046         can handle icalls etc. properly.
12047
12048         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12049
12050         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12051
12052         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12053         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12054         JIT_ICALL_ADDR patch type.
12055
12056         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12057
12058         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12059         request flag.
12060         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12061
12062         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12063
12064 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12067         domain->jit_code_hash.
12068
12069 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12070
12071         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12072
12073 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12074
12075         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12076         get_this_arg_from_call, let it compute it when needed.
12077
12078         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12079         gsctx from code only when needed.
12080
12081         * mini-trampolines.c (get_generic_context): Rename this to 
12082         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12083         it can be called by the arch backends.
12084
12085         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12086
12087 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * driver.c (mono_main): Add experimental --aot-only command line option.
12090
12091         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12092         set.
12093
12094 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12095
12096         * driver.c (DllMain): Remove mono_module_handle.
12097
12098         Contributed under MIT/X11 license.
12099
12100 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12103         for emitting methods which are not in the source assembly. Detect and report
12104         failure of assembling+linking.
12105         
12106         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12107
12108         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12109
12110 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12111
12112         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12113
12114 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12115
12116         * mini.h: Remove some obsolete prototypes.
12117
12118         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12119
12120 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12121
12122         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12123         supported by Visual Studio, so use alloca().
12124
12125 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12126
12127         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12128         Fixes #402585.
12129
12130 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12131
12132         * mini.c: Fail sharing of a generic method if it contains an open
12133         catch clause (because we don't pass MRGCTXs yet).
12134
12135 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12136
12137         * mini.c: When compiling a method with generic sharing, insert the
12138         method instantiated with an all-Object generic context into the
12139         jit info table, instead of the context of the first instantiation
12140         of the method we happen to compile.
12141
12142 2008-06-18  Martin Baulig  <martin@ximian.com>
12143
12144         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12145         `major_version' and `minor_version'.
12146
12147 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12148
12149         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12150         mono_method_is_generic_sharable_impl() takes an additional
12151         argument specifying whether to treat type variables as reference
12152         types.
12153
12154 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12155
12156         * mini.h: Removed obsolete prototypes.
12157
12158 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12159
12160         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12161         already handle them.
12162
12163 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12164
12165         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12166         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12167         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12168         tramp-x86.c: Added a MonoGenericContext* argument to
12169         mono_arch_get_unbox_trampoline() so that it can call other
12170         functions which require it.
12171
12172 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12173
12174         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12175         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12176         mono_arch_get_this_arg_from_call() takes a
12177         MonoGenericSharingContext* as well.
12178
12179 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12180
12181         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12182         implement generic sharing of unbox.
12183
12184 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12185
12186         * mini.c: Don't compute the vtable to determine whether a field is
12187         special static, because it might not work for open types.
12188
12189 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12190
12191         * mini.c: Removed the unused token_type and token_source arguments
12192         from get_runtime_generic_context_ptr().
12193
12194 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12195
12196         * mini.c (ADD_BINOP): fix the build
12197
12198 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12199
12200         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12201         a widening op.
12202
12203 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12204
12205         * mini.h: Removed class relations enum that's not used anymore.
12206
12207 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12208
12209         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12210
12211         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12212         the lazy fetch trampoline access code.
12213
12214 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12215
12216         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12217
12218 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12221
12222         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12223
12224         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12225
12226 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12227
12228         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12229         intrinsics.
12230
12231         * mini-ops.h: Add MIN/MAX_UN opcodes.
12232
12233         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12234         intrinsics.
12235
12236         * basic-math.cs: Add more min/max tests.
12237
12238         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12239
12240 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12241
12242         * mini.c: Small fix in the prologue of emit_castclass.
12243
12244 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12245
12246         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12247
12248         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12249         do not work even for unsigned types. Fixes #400014.
12250
12251         * basic-math.cs: Add regression tests for unsigned Min/Max.
12252
12253 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12254
12255         * mini.c: Added additional context_used argument to several
12256         functions, which will be needed for sharing generic methods.  Use
12257         GET_RGCTX macro wherever appropriate.  Declare only one
12258         context_used in mono_method_to_ir().
12259
12260 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12261
12262         * mini.c, generic-sharing.c: Removed generic class relations.
12263
12264         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12265         functions due to MRGCTX changes.
12266
12267 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12268
12269         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12270         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12271         with calculated IMT.
12272
12273         * mini.c: Generic sharing of calls via generic interfaces.
12274
12275         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12276         generic method with non-constant MonoGenericContext*.  Instead,
12277         the context is taken out of the method itself.
12278
12279 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12280
12281         * mini.c: Generic sharing of ldvirtftn.
12282
12283 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12284
12285         * mini.c: Generic sharing of ldftn.
12286
12287 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12288
12289         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12290
12291 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12292
12293         * mini.c: Generic sharing of the special case of ldtoken followed
12294         by a call to GetTypeFromHandle.
12295
12296 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12297
12298         * mini.c: Generic sharing of box for nullable types.
12299
12300 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12301
12302         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12303         are passed on the stack. Fixes #324807.
12304
12305 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12306
12307         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12308         for the ArgValuetypeAddrInIReg case.
12309
12310         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12311         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12312
12313         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12314         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12315         local variable and pass the local variable by reference to the called method.
12316           
12317         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12318         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12319
12320         Contributed under MIT/X11 license.
12321
12322 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12323
12324         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12325
12326         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12327         everything.
12328
12329 2008-06-10  Martin Baulig  <martin@ximian.com>
12330
12331         * debug-mini.c
12332         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12333
12334 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12335
12336         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12337         possible error when no arguments are passed.
12338
12339         Contributed under MIT/X11 license.
12340
12341 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12342
12343         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12344         where the file name is NULL.
12345
12346 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12347
12348         * mini.c: Fix s390 build.
12349
12350 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12351
12352         * trace.c (mono_trace_parse_options): Fix warnings.
12353
12354         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12355
12356 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12357
12358         * mini.c (remove_block_if_useless): Avoid printing the method name.
12359         
12360         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12361         MONO_INST_NEW.
12362
12363         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12364         LMF. Not yet used.
12365
12366         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12367         translated code after it has been patched.
12368
12369 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12370
12371         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12372         avoid problems during code patching on SMP systems.
12373         (emit_call): Avoid adding a patch info which is already added by 
12374         emit_call_body.
12375         (mono_arch_emit_exceptions): Ditto.
12376
12377 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12378
12379         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12380         MONO_TYPE_ISSTRUCT already checks for it.
12381
12382 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12383
12384         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12385           structs with floats on Winx64 the float registers are not used.  
12386           The integer registers are always used..
12387         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12388           only one register will be used and only if the size of the struct 
12389           is 1,2,4, or 8 bytes.
12390
12391         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12392           to work for Winx64.
12393
12394         Contributed under MIT/X11 license.
12395
12396 2008-06-05  Martin Baulig  <martin@ximian.com>
12397
12398         * debug-debugger.c (debugger_lookup_class): Also call
12399         mono_class_setup_methods() here; we're only called from RTI.
12400
12401 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12402
12403         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12404         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12405         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12406         Post-process object files and add dtrace-generated object, if necessary.
12407
12408         Contributed under MIT/X11 license.
12409
12410 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12411
12412         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12413         element class.
12414
12415         * mini.c: Generic sharing for unbox.any and castclass.
12416
12417 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12418
12419         * mini.c: Ignore tailcall prefix in shared generic code and when
12420         doing calls which require a vtable/rgctx argument.
12421
12422 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12423
12424         * mini.c: Don't free the JIT info.
12425
12426         * driver.c: Changes in the JIT info table testing code.
12427
12428 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12429
12430         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12431         interruption. Fix some warnings.
12432
12433         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12434         interruption_checkpoint.
12435
12436 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12437
12438         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12439         from embedding applications.
12440
12441 2008-06-02  William Holmes  <billholmes54@gmail.com>
12442
12443         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12444           reserving 32 bytes on the stack when making calls. 
12445
12446         Contributed under MIT/X11 license.
12447
12448 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12449
12450         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12451         the linear IL branch.
12452
12453         * driver.c: Print out more information for --version on arm.
12454
12455 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12456
12457         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12458         bb_exit instead, since out of line bblocks might not actually be emitted
12459         out-of-line.
12460         
12461         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12462         maximum epilog size for out of line bblocks if tracing is enabled.
12463
12464         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12465
12466 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12467
12468         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12469
12470 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12471
12472         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12473         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12474         opcodes.
12475
12476 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12477
12478         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12479         the 'value' to store is a constant.
12480
12481         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12482
12483         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12484         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12485
12486 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12487
12488         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12489         for accessing method->generic_container.
12490
12491 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12492
12493         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12494         
12495         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12496
12497         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12498
12499         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12500         fails.
12501
12502 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12503
12504         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12505
12506         * mini.c: Handle the case when mono_class_vtable () fails.
12507
12508 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12509         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12510         the stat profiler.
12511
12512 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12513
12514         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12515         together with domain sharing.
12516
12517 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12518
12519         * mini.c: Treat callvirts to final methods like non-virtual calls
12520         when doing generic sharing, i.e. look them up in the runtime
12521         generic context.
12522
12523 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12524
12525         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12526         with computed types (for generic sharing).
12527
12528         * mini.c: Generic sharing for mkrefany and refanyval.
12529
12530 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12531
12532         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12533         possible.
12534
12535         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12536         the generic sharing code.
12537         
12538         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12539         when needed.
12540
12541 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12542
12543         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12544
12545 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12546
12547         * driver.c: updated copyright date
12548
12549 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12552         needed.
12553
12554 2008-05-19  Martin Baulig  <martin@ximian.com>
12555
12556         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12557         pointing to the new `_mono_debug_using_mono_debugger' variable.
12558
12559         * driver.c
12560         (mono_main): Check mono_debug_using_mono_debugger() rather than
12561         the `MONO_INSIDE_MDB' environment variable to check whether we're
12562         inside the debugger.
12563
12564 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12567         argument.
12568
12569 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12570
12571         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12572
12573         * mini.c: Added mini_assembly_can_skip_verification. This
12574         function checks if the assembly requested to skip verification. 
12575         Fixes part of #387274.
12576
12577 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * mini.c (mini_get_method): Disable the check for open generic classes when
12580         using generic sharing.
12581
12582         * generics.cs: Add a test for #387034.
12583
12584         * mini.c (mini_get_method): Check whenever the method class is an open generic
12585         type, and return NULL in that case, causing a verification error. Fixes
12586         #384123.
12587
12588 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12589
12590         * driver.c (mono_main): Revert r102623. The right
12591         thing to do is to enable the verifier under verifiable
12592         unless a --security flag was passed.
12593
12594         We need this non-trivial behavior for --verify-all otherwise
12595         mcs-compileall won't be able to use it. As it needs everything to
12596         be verified under validil.
12597
12598 2008-05-06  Martin Baulig  <martin@ximian.com>
12599
12600         Fix #383749.
12601
12602         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12603         (mono_debugger_thread_cleanup): Likewise.
12604         (mono_debugger_extended_notification): Likewise.
12605
12606 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12607
12608         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12609         against both inflated and non-inflated methods. We need to check against the
12610         generic definition for cases where the instantiated method is not visible.
12611         We need to check against the inflated types for cases where the instantiation
12612         changes any super type. This fixes #382986.
12613
12614         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12615         that check for visibiliy as generic params only appears as the type subject
12616         of tokens on call opcodes. Field manipulation and ldftn must always
12617         target an exact type.
12618
12619 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12620
12621         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12622         if no related --security flag is passed.
12623
12624 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12625
12626         * mini-arch.h: Prepare support for ppc64.
12627
12628         Contributed under MIT/X11 license.
12629
12630 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12631
12632         * aot-runtime.c: Prepare support for ppc64.
12633
12634         Contributed under MIT/X11 license.
12635
12636 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12637
12638         * mini-ops.h: Prepare support for ppc64.
12639
12640         Contributed under MIT/X11 license.
12641
12642 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12643
12644         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12645
12646         Contributed under MIT/X11 license.
12647
12648 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12649
12650         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12651         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12652         assemblies on windows.
12653
12654 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12655
12656         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12657         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12658         * main.c: Use UTF-8 encoded command line instead of Windows default code
12659         page on Windows to support Unicode.
12660         * driver.c (DllMain): New function for mixed-mode assembly support.
12661         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12662         export __stdcall functions without decoration.
12663
12664         Contributed under MIT/X11 license.
12665
12666 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12667
12668         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12669         saving it very early.
12670
12671 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12672
12673         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12674         deleted.  The only way to access the new RGCTX is via the
12675         trampline.
12676
12677         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12678         vtable instead of the RGCTX to static methods.
12679
12680         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12681         accessing the new RGCTX.
12682
12683         * generic-sharing.c: There is no separation between self, type
12684         arguments and other types in the RGCTX anymore.
12685
12686 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12687
12688         * mini-amd64.c (add_general): Remove previous stack adjustment.
12689         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12690         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12691         for 32 bytes of stack space reserved for all calls.
12692         
12693         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12694         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12695         adjustment.
12696         
12697         Code contributed under MIT/X11 license.
12698
12699 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12700
12701         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12702         against the root definition, peeling out method and type instantiations.
12703         Cache verify success results, code that fails verification is still
12704         checked multiple times.
12705
12706 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12707
12708         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12709
12710 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12711
12712         * mini-amd64.c (add_general): Always increment stack on Win64.
12713         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12714         on Win64.
12715         
12716         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12717         stack based argument handling on Win64.
12718         
12719         Code contributed under MIT/X11 license.
12720
12721 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12722
12723         * Makefile.am (version.h): Add support for git-svn.
12724
12725 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12726
12727         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12728         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12729         avoiding allocations and libc functions which might deadlock.
12730         
12731         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12732         'no-gdb-backtrace' option is set.
12733
12734         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12735
12736         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12737
12738 2008-04-21  Martin Baulig  <martin@ximian.com>
12739
12740         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12741         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12742
12743 2008-04-21  Martin Baulig  <martin@ximian.com>
12744
12745         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12746         `thread_vtable', `event_handler_ptr' and `event_handler'.
12747
12748 2008-04-21  Martin Baulig  <martin@ximian.com>
12749
12750         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12751         allows delayed initialization of the `executable_code_buffer' when
12752         attaching.
12753
12754 2008-04-21  Martin Baulig  <martin@ximian.com>
12755
12756         * mini.h (mono_debugger_create_notification_function): Removed.
12757         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12758
12759         * mdb-debug-info64.s
12760         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12761
12762         * mdb-debug-info32.s
12763         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12764
12765         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12766         currently only works on x86 and x86_64, so don't create it on ppc.
12767
12768 2008-04-21  Martin Baulig  <martin@ximian.com>
12769
12770         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12771
12772         * mini.c
12773         (mini_method_compile): In the fp elimination check, check
12774         `debug_options.mdb_optimizations' in addition to
12775         mono_debug_using_mono_debugger().       
12776
12777         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12778         disable some JIT optimizations which are only disabled when
12779         running inside the debugger.
12780         Added `--help-debug' option to describe the debugging options.
12781         (parse_debug_options): New static function to parse the `--debug'
12782         options, so we can easily add more stuff in future.
12783
12784 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12785
12786         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12787         the method has no body.
12788
12789 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12790
12791         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12792         assembly is not allowed in MSVC 64-bit compiler. 
12793         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12794         as we get floating point exceptions everywhere.
12795         
12796         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12797         correctly align arguments for call to throw_exception.
12798         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12799         
12800         Code contributed under MIT/X11 license.
12801
12802 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12803
12804         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12805
12806 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12807
12808         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12809
12810         * mini-amd64.c (NEW_INS): Set cil_code.
12811
12812         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12813         from mini-amd64.c so all debugger related logic is in one place.
12814
12815         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12816         later won't have a random ip assigned to them.
12817
12818 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12819
12820         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12821         the arch specific function initializes code_size.
12822         (mono_create_delegate_trampoline): Ditto.
12823
12824         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12825         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12826         platforms.
12827
12828         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12829         running under the debugger.
12830
12831         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12832         debugger.
12833
12834         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12835         debugger. Also move the disabling of optimizations here from driver.c.
12836         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12837         debugger.
12838
12839         * mini.h (MonoCompile): Add a few new flags.
12840
12841 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12844         so the cil_code field of created MonoInst's is properly set.
12845         (mini_select_instructions): Ditto.
12846
12847         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12848         (MONO_INST_NEW_CALL): Ditto.
12849
12850         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12851         in many places so the ins->cil_code field is properly initialized.
12852
12853         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12854         place.
12855
12856 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * mini.c (mini_method_compile): Print a different message when compiling a 
12859         shared method.
12860         
12861         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12862         > 1.
12863
12864 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12867         SSE2 instructions.
12868
12869         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12870         
12871 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12872
12873         * mini.c (handle_stack_args): Make this return void since its return value was
12874         never used. Also set cfg->unverifiable for invalid IL instead of calling
12875         G_BREAKPOINT ().
12876
12877 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12878
12879         * mini.c: Make sure "this" is live in catch clauses with type
12880         variables in shared generic code.
12881
12882 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12883
12884         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12885         generic_class_is_reference_type() to ensure the proper behaviour
12886         when sharing generic code and the type in question is a type
12887         argument.
12888
12889 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12890
12891         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12892         race conditions when printing thread dumps. Fixes #377738.
12893
12894 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12895         
12896         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12897         shows up when both MonoInst arguments can cause aliasig.
12898         There is likely no way in the current JIT to trigger this problem, but
12899         it showed up in the development of generics sharing, when in a new
12900         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12901         When the generics sharing code will be committed, its tests will be
12902         valid also for this bug.
12903
12904 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12905
12906         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12907         PATCH_INFO_METHOD.
12908
12909         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12910         NULL.
12911
12912 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12915         use a more detailed exception message for InvalidCastException.
12916
12917         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12918
12919         * driver.c (mono_main): Add --debug=casts option to turn on better 
12920         InvalidCastException message details.
12921
12922         * mini.c (mini_get_debug_options): New helper function to return the address of
12923         the debug_options variable.
12924
12925         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12926         the jit_tls TLS variable.
12927
12928         * mini.c (mono_jit_tls): New TLS variable.
12929
12930         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12931         option is used.
12932
12933 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12934
12935         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12936
12937         * mini.c: Removed verifer related stuff, code moved to verify.c.
12938
12939         * driver.c: Using code from verify.c instead of mini.c.
12940
12941 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12942
12943         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12944         longer valid.
12945
12946 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12947
12948         * mini.c (check_for_method_verify): Enabling verification of
12949         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12950         have been fixed.
12951
12952 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12953
12954         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12955         caller saved registers as well.
12956         
12957         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12958         saved registers as well.
12959
12960 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12961
12962         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12963
12964         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12965         code.
12966
12967 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12968
12969         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12970         to get_call_info.
12971         (get_call_info): Take a gsctx argument instead of 'cfg'.
12972
12973 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12976         mono_verify_all is set.
12977
12978         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12979
12980         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12981
12982 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12983
12984         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12985         an exception.
12986
12987         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12988         verifier and the code generated by the compiler.
12989
12990 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12991
12992         * mini.c: Generic sharing of the non-nullable case of the box
12993         instruction.
12994
12995 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * inssel.brg: Fix the build.
12998
12999         * iltests.il.in: Add a test for lconv.ovf.u8.un.
13000
13001 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
13002
13003         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
13004         Array:Address. Fixes #372410.
13005
13006         * iltests.il.in: New tests for readonly prefix.
13007
13008 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
13009
13010         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
13011         mini-trampolines.c.
13012
13013         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
13014         mini-exceptions.c.
13015
13016         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
13017         
13018         * mini.c (mono_decompose_op_imm): New helper function.
13019
13020         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
13021         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13022         return value.
13023
13024         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13025         mono_arch_output_basic_block. Fix warnings.
13026
13027         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13028         for now.
13029
13030 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13031
13032         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13033         since the extra frame is now detected automatically inside the loop.
13034
13035         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13036         opts which are now in mono_peephole_ins ().
13037         
13038         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13039
13040         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13041         frames and skip duplicate managed-to-native frames. Fixes #367665.
13042
13043         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13044         opts which are now in mono_peephole_ins ().
13045         (mono_arch_peephole_pass_2): Ditto.
13046
13047         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13048
13049         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13050         arch independent peephole optimizations.
13051
13052         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13053         opts which are now in mono_peephole_ins ().
13054
13055         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13056         
13057         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13058
13059         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13060         pattern.
13061
13062         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13063         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13064         opcode. 
13065
13066 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13067
13068         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13069         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13070         return value.
13071
13072         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13073         mono_arch_output_basic_block. Fix warnings.
13074
13075 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13076
13077         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13078         conv.ovf.u.un.
13079
13080 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13081
13082         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13083         conv.ovf.u.un.
13084
13085         * iltests.il: Add new tests.
13086
13087 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13088
13089         * mini.c: Removed Windows version macros.
13090
13091 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13092
13093         * generic-sharing.c: Put reflection types in the extensible part
13094         of the runtime generic context.
13095
13096         * mini.c: Generic sharing of the GetTypeHandle special case of the
13097         ldtoken instruction.
13098
13099 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13100
13101         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13102
13103         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13104         
13105         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13106         consistency with the other version on the linear IR branch.
13107
13108         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13109
13110         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13111
13112         * iltests.il.in: Add new tests.
13113
13114 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13115
13116         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13117
13118         * iltests.il.in: Add new tests.
13119
13120 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13121
13122         * mini.c: Two variables with the same name were declared in
13123         nesting contexts and one wasn't initialized.  Fixed.
13124
13125 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13126
13127         * mini.c: Generic sharing of the initobj instruction.
13128
13129 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13130
13131         * mini.c: make the test to optimize ldtoken from typeof() more
13132         precise.
13133
13134 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13135
13136         * mini.c: Generic sharing of the initobj instruction for reference
13137         types.
13138
13139 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13140
13141         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13142         the mono_breakpoint_clean_code() code to perform bound checks.
13143
13144 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13145
13146         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13147         mono_arch_patch_callsite() to include the start of the managed method
13148         to be able to perform bound checks.
13149
13150 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13151
13152         * mini.c: Generic sharing for the isinst instruction.
13153
13154 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13155
13156         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13157         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13158         with the runtime generic context argument.
13159
13160         * mini.c: Share calls to several types of unsharable methods by
13161         putting the address of the method code in the runtime generic
13162         context and doing an indirect call.
13163
13164         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13165         to switches.
13166
13167 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13168
13169         * generic-sharing.c: Change due to a change in the runtime genric
13170         context API.
13171
13172 2008-03-15  Martin Baulig  <martin@ximian.com>
13173
13174         * tramp-x86.c
13175         (mono_arch_nullify_class_init_trampoline): Add call to
13176         mono_breakpoint_clean_code() to make things work when running
13177         inside the debugger.
13178
13179         * tramp-amd64.c
13180         (mono_arch_nullify_class_init_trampoline): Add call to
13181         mono_breakpoint_clean_code() to make things work when running
13182         inside the debugger.
13183
13184 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13185
13186         * inssel-long.brg (reg): Fix 64 bit build.
13187
13188 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13189
13190         * mini.c, mini.h: Share static generic code by passing it an
13191         implicit argument pointing to the runtime generic context.
13192
13193         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13194         inssel-long32-mips.brg: New opcodes for calling shared static,
13195         which need to be passed the runtime generic context.
13196
13197         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13198         argument on the stack in the prologue if needed.  New function for
13199         finding the runtime generic context argument from the registers
13200         saved by the trampoline.
13201
13202         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13203         runtime generic context argument.
13204
13205         * tramp-amd64.c: Also restore the register used for the runtime
13206         generic context argument.
13207
13208         * mini-trampoline.c: Resolve shared static calls by consulting the
13209         runtime generic context via the new argument.
13210
13211         * generic-sharing.c: Add an argument to sharability-checking
13212         functions that specifies whether type variables should be treated
13213         as sharable type arguments.
13214
13215         * inssel-x86.brg: Removed a superfluous, buggy rule.
13216
13217         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13218         to switches.
13219
13220 2008-03-14  Martin Baulig  <martin@ximian.com>
13221
13222         * debug-debugger.c (main_thread_handler): Call
13223         mono_runtime_run_main() without sending any notifications.
13224
13225         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13226
13227 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13228
13229         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13230
13231 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13232
13233         * tramp-x86.c: Fixed register restore offsets in the trampoline
13234         code for ECX and EDX.
13235
13236 2008-03-12  Geoff Norton  <gnorton@novell.com>
13237
13238         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13239         different ucontext_t implementations.
13240         * exceptions-arm.c: Use the above defines to get exceptions working on 
13241         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13242         * mini-arm.c: Implement iPhone icache support (based on a patch by
13243         Luke Howard lukeh@padl.com)
13244
13245 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13246
13247         * mini.c: Enable generic sharing of calls to non-static
13248         non-interface non-generic non-value-type methods.
13249
13250         * mini-trampolines.c: Resolve calls from shared generic code.
13251
13252 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13253
13254         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13255
13256         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13257
13258 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13259
13260         * mini.c: some fixes for the AOT compiler.
13261
13262 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13263
13264         * cpu-amd64.md: Add clob:1 to some float opcodes.
13265
13266 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13267
13268         * mini.h: Added MiniVerifierMode enumeration.
13269
13270         * mini.c: Added mini_verifier_set_mode to control
13271         the usage of the new verifier.
13272
13273         * mini.c (mono_method): Integrated the new verifier.
13274
13275         * driver.c: Extended --security option with validil and
13276         verifiable options to activate the new verifier.
13277
13278 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13279
13280         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13281         optimization to ctors taking 0 or 2 arguments too.
13282
13283         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13284         a bit.
13285
13286         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13287
13288         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13289
13290 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13291
13292         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13293         non-aot case as well.
13294
13295         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13296
13297         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13298         changes.
13299
13300         * aot-compiler.c (encode_patch): Ditto.
13301
13302         * mini.h (G_MININT32): Fix the definition of this.
13303
13304 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13305
13306         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13307
13308         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13309
13310 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13311
13312         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13313         methods returning vtypes in registers.
13314         (mono_arch_allocate_vars): Ditto.
13315
13316         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13317
13318         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13319
13320         * generics.cs: Add a test from the linear IR branch.
13321
13322         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13323
13324         * mini.c (inline_method): Cache failed inline attempts.
13325
13326 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13327
13328         * mini.c: For shared methods of generic classes put the location
13329         of "this" into the MonoGenericJitInfo.
13330
13331         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13332         register out of a MonoContext by register number.  Add the generic
13333         sharing context as an argument to mono_arch_find_this_argument().
13334
13335         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13336         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13337         for new arch function.
13338
13339         * mini-exception.c: Handle open exception clauses in shared
13340         generic code.
13341
13342         * mini-trampolines.c: Supply additional argument to
13343         mono_arch_find_this_argument().
13344
13345 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13346
13347         * Makefile.am (regtests): Run the bench.exe tests last.
13348
13349 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13352         a bit.
13353
13354 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13355
13356         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13357         with MS.
13358
13359         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13360         
13361         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13362
13363         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13364         whose class has no cctor.
13365
13366         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13367
13368 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13369
13370         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13371         unverified.
13372
13373 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13374
13375         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13376         to be in sync with the code on the linear IR branch.
13377
13378         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13379
13380         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13381
13382 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13385
13386         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13387
13388         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13389
13390         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13391
13392         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13393         
13394         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13395         body.
13396
13397 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13398
13399         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13400         OP_LOADR4_MEMBASE emission.
13401
13402         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13403         (mono_spillvar_offset_float): Ditto.
13404
13405         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13406
13407         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13408         emission.
13409
13410         * basic-long.cs: Add regression tests for them.
13411
13412         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13413         use.
13414         (mono_arch_allocate_vars): Fix representation of single-precision float
13415         argument.
13416         (mono_arch_output_basic_block): Ditto.
13417
13418         * inssel-mips.brg: Ditto, remove duplicate items.
13419
13420         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13421         arguments of tail calls as on other platforms.
13422         (mono_arch_output_basic_block): Handle tail calls.
13423
13424         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13425         register.
13426
13427         * objects.cs (test_5_pass_static_struct): Add test for it.
13428
13429         Contributed under MIT/X11 license.
13430
13431 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13432
13433         * Makefile.am: Use gmcs for compiling the regression tests.
13434
13435         * *.2.cs *.2.il: Rename to *.cs and *.il.
13436
13437 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13438
13439         * regalloc.h: Make the vassign array smaller.
13440
13441         * mini.c (mini_method_compile): Remove an unused field in cfg.
13442
13443         * mini-codegen.c: Add a bunch of micro optimizations.
13444
13445 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13446
13447         * regalloc.h: Remove some unused fields.
13448
13449 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13450
13451         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13452
13453         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13454
13455 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13456
13457         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13458
13459         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13460         trampoline: Fetch an entry from the runtime generic context.  If
13461         it's NULL, jump to the actual trampoline to fill the runtime
13462         generic context.  Otherwise, return it.
13463
13464         * mini.c: Call the lazy fetch trampoline to get entries out of the
13465         runtime generic context.
13466
13467         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13468         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13469         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13470
13471 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13472
13473         * mini.c: Fetch data out of the extensible part of the runtime
13474         generic context instead of calling a helper function.
13475
13476         * generic-sharing.c: Some functions moved into
13477         metadata/generic-sharing.c.  Helper function for fetching other
13478         types now checks and asserts against extensible rgctx (just for
13479         debugging purposes - the helper function isn't called anymore
13480         unless for debugging).
13481
13482 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13483
13484         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13485         for tail calls up to the point that the tests in iltests.exe run. Also add a
13486         dummy CKFINITE implementation.
13487         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13488         needed for trampoline LMF frames.
13489
13490         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13491         trampoline LMF frames.
13492
13493 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13494
13495         * mini.c (inline_method): clean any pending loader error when inlining fail.
13496         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13497
13498 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13499
13500         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13501
13502         * aot-runtime.c (decode_patch_info): Ditto.
13503
13504         * mini.c (mono_resolve_patch_target): Ditto.
13505         
13506         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13507         icall wrappers.
13508
13509         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13510         
13511         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13512         if it references an icall address.
13513
13514 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13515
13516         * cpu-s390x.md: Remove some more unused opcodes.
13517         
13518         * cpu-s390x.md: Remove some unused opcodes.
13519
13520         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13521         mono_op_imm_to_op ().
13522
13523         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13524         instead of a switch statement.
13525         
13526         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13527         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13528
13529         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13530         
13531         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13532
13533         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13534         -1.
13535
13536 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13537
13538         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13539         opened. Fixes #362607.
13540
13541         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13542
13543         * iltests.il.in: Add a test for static methods in interfaces.
13544
13545 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13546
13547         * genmdesc.c (build_table): Fix a crash on older glib versions.
13548
13549         * cpu-sparc.md: Remove some unused opcodes.
13550         
13551         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13552         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13553
13554         * cpu-amd64.md: Remove some unused opcodes.
13555
13556         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13557         like the other opcodes.
13558
13559 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13560
13561         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13562
13563         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13564
13565         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13566         variables 'cfg' instead of 'm' for consistency.
13567
13568         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13569
13570         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13571         argument holding the vtype return address, to avoid the ambigious use of
13572         cfg->ret for this purpose.
13573
13574         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13575
13576         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13577         
13578         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13579         new mono_print_ins () function which only takes one argument.
13580
13581 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13582
13583         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13584         macro arguments.
13585
13586 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13587
13588         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13589
13590         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13591
13592         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13593         opcodes and other small changes.
13594
13595         * mini-ops.h: Add some new opcodes from the linear IR branch.
13596
13597         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13598
13599         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13600         opcodes, use the REG_MEMBASE opcodes instead.
13601         
13602         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13603         opcodes, use the REG_MEMBASE opcodes instead.
13604         
13605         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13606         linear IR branch.
13607
13608         * mini.c (mono_op_imm_to_op): New helper function.
13609
13610         * mini-ops.h: Add some opcodes from linear IR branch.
13611
13612 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13613
13614         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13615         <tsv@solvo.ru>.
13616
13617 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13618
13619         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13620         OP_ICONV_TO_R4/R8.
13621
13622         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13623
13624 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13625
13626         * aot-compiler.c (emit_method_code): Add an assert.
13627
13628         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13629         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13630         methods.
13631
13632 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13633
13634         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13635         some load/store opcodes so they are consistent. 
13636         (mono_arch_emit_prolog): Simplify some code.
13637
13638         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13639
13640         * objects.cs: Add tests for large argument offsets on ARM.
13641
13642         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13643         stack offsets. Fixes #359651.
13644
13645         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13646
13647         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13648
13649         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13650
13651         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13652
13653         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13654
13655         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13656         rid of CEE_CONV_R_UN.
13657
13658         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13659
13660 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13661
13662         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13663
13664         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13665
13666         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13667
13668         * cpu-amd64.md: Remove some unused opcodes.
13669
13670         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13671
13672         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13673
13674         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13675         arch specific functions for its parts. Call the peephole pass after local
13676         regalloc so the prolog can compute a more accurate max_offset.
13677         
13678         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13679         the corresponding OP_I/OP_L opcodes.
13680
13681         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13682
13683         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13684
13685 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13686
13687         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13688         as they are handled in mini.c.
13689
13690         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13691         
13692         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13693         case since it is handled in mini.c.
13694
13695         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13696
13697         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13698
13699         * *.c: Use the new opcodes in the IR and back end code.
13700
13701         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13702
13703         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13704
13705 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13706
13707         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13708         an assert because it has a race condition.
13709
13710 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13711
13712         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13713
13714         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13715
13716         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13717
13718         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13719         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13720
13721 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13722
13723         * cpu-amd64.md (move): Correct the maximum size of move.
13724
13725 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13726
13727         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13728         the generic class init trampoline to return quickly if the class
13729         is already inited.
13730
13731 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13732
13733         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13734         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13735
13736 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13737
13738         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13739         branch.
13740
13741 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * objects.cs: Add some soft-float tests.
13744
13745         * mini.c: Fix a couple more soft-float issues.
13746
13747         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13748
13749         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13750         avoid a REX prefix.
13751
13752 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13753
13754         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13755         exception happens while compiling a virtual method.
13756
13757 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13758
13759         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13760         
13761         * mini-sparc.c: Fix build.
13762
13763         * mini-sparc.c (get_call_info): Add support for generic sharing.
13764
13765         * mini-exceptions.c: Add a FIXME.
13766
13767 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13768
13769         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13770         altstack handling code.
13771
13772         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13773         
13774         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13775
13776         * mini-s390.c: Add support for generic sharing.
13777
13778         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13779         Fix CAS on s390.
13780         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13781
13782         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13783
13784         * mini-s390x.c: Add support for generic sharing.
13785         
13786         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13787         Fix CAS on ia64.
13788         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13789
13790         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13791         can be used since it takes a 16 bit signed immediate.
13792
13793         * inssel-s390x.brg: Fix OP_SETRET.
13794
13795         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13796
13797         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13798
13799         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13800
13801         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13802
13803         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13804         in one place.
13805
13806         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13807         stuff.
13808
13809         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13810         of the unused mono_arch_patch_delegate_trampoline stuff.
13811
13812 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13813
13814         * basic-long.cs: Move the fp related tests to basic-float.cs.
13815
13816         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13817
13818         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13819
13820         * basic-calls.cs: Add a test for proper float argument passing.
13821
13822         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13823         if the context corresponds to an exception received through a signal.
13824
13825         * exceptions.cs: Add a test for nullref handling at the start of a try
13826         clause.
13827
13828         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13829
13830         * jit-icalls.c (mono_break): New JIT icall.
13831
13832         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13833
13834         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13835
13836 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13837
13838         * cpu-*.md: Get rid of unused opcodes.
13839
13840         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13841
13842         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13843         by all platforms.
13844
13845         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13846         define.
13847
13848         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13849         the arch independent trampoline code in mini-trampolines.c.
13850
13851         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13852
13853         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13854
13855         * mini-s390.h: Remove an unused define.
13856         
13857         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13858         the arch independent trampoline code in mini-trampolines.c.
13859
13860         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13861
13862 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13863
13864         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13865
13866         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13867
13868         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13869
13870         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13871
13872         * cpu-amd64.md: Use smaller sizes for int opcodes.
13873
13874         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13875
13876         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13877         objects.cs.
13878
13879         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13880         debugging.
13881
13882         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13883         instead of though a pointer to save an indirection when accessing elements of
13884         the array.
13885
13886         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13887         some typos.
13888         (NOT_IMPLEMENTED): New helper macro.
13889         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13890         of a bb.
13891
13892         * *.c: Use the new helper macro.
13893
13894 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13895
13896         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13897
13898 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13899
13900         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13901         stack slots.
13902
13903 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13904
13905         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13906         profiling is enabled.
13907         
13908         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13909         the end.
13910         (mono_arch_emit_prolog): Add more first bblock optimizations.
13911
13912         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13913         in order if possible.
13914         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13915         bblock, since the arguments are still in their original registers.
13916
13917         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13918
13919 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13922         as well.
13923
13924         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13925         offset 0.
13926
13927         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13928
13929         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13930         process async exceptions received while in unmanaged code.
13931
13932         * mini.c (mini_init): Install a callback with the runtime which will be called
13933         when a thread receives an async exception while in unmanaged code.
13934
13935         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13936
13937         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13938
13939 2008-01-16  Wade Berrier  <wberrier@novell.com>
13940
13941         * cpu-g4.md:
13942         * cpu-arm.md:
13943         * cpu-s390x.md:
13944         fix build
13945
13946 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13947
13948         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13949         compilation with sun cc.
13950
13951         * cpu-*.md: Fix the build.
13952
13953         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13954
13955         * mini-amd64.h: Add some comments to the MonoLMF structure.
13956
13957         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13958         
13959         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13960         in the LMF structure if possible. This saves two instructions in the
13961         managed->native wrappers.
13962
13963         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13964
13965 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13966
13967         * generic-sharing.c: New type argument lookup code which uses the
13968         runtime generic context template.
13969
13970 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13971
13972         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13973
13974         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13975         (mono_arch_output_basic_block): Fix localloc implementation.
13976
13977         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13978
13979         * mini-ia64.c (peephole_pass): Fix ia64 build.
13980
13981         * mini-amd64.c (peephole_pass): Fix a warning.
13982         
13983         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13984         at a constant offset from sp/fp.
13985
13986         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13987         instead of obtaining it from *lmf in the managed method case.
13988
13989 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13990
13991         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13992
13993 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13994
13995         * mini.h (MonoInstList): New type.
13996         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13997         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13998         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13999         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
14000         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
14001         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
14002         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
14003         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
14004         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
14005         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
14006         MONO_INST_LIST_FOR_EACH_ENTRY,
14007         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
14008         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
14009         mono_inst_list_first, mono_inst_list_last,
14010         mono_inst_list_next, mono_inst_list_prev): New instruction
14011         list handling interfaces.
14012         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
14013         list head 'ins_list'.
14014         (MonoInst): Replace next pointer with list head 'node'.
14015         (MonoCallInst): Make 'out_args' a MonoInstList.
14016         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
14017         (MonoCompile): Delete reverse_inst_list and
14018         reverse_inst_list_len.
14019         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
14020         mono_arch_lowering_pass, mono_arch_local_regalloc,
14021         mono_arch_output_basic_block, mono_arch_emit_prolog):
14022         Convert to new instruction lists.
14023         (insert_after_ins): Delete.
14024         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14025         instruction lists.
14026         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14027         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14028         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14029         mono_emulate_opcode, mono_emit_load_got_addr,
14030         inline_method, mono_method_to_ir, mono_print_bb_code,
14031         print_dfn, decompose_pass, nullify_basic_block,
14032         replace_out_block_in_code, remove_block_if_useless,
14033         merge_basic_blocks, move_basic_block_to_end,
14034         try_unsigned_compare, optimize_branches, mono_print_code,
14035         mini_select_instructions, remove_critical_edges): Likewise.
14036         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14037         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14038         mono_arch_output_basic_block, mono_arch_emit_prolog):
14039         Likewise.
14040         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14041         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14042         mono_arch_output_basic_block): Likewise.
14043         (inst_list_prepend, insert_after_ins): Delete.
14044         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14045         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14046         instruction lists.
14047         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14048         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14049         mono_arch_emit_prolog): Likewise.
14050         * cfold.c (mono_constant_fold): Likewise.
14051         * liveness.c (visit_bb, mono_analyze_liveness,
14052         optimize_initlocals): Likewise.
14053         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14054         * graph.c (mono_draw_code_cfg): Likewise.
14055         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14056         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14057         mono_ssa_cprop): Likewise.
14058         * abcremoval (get_relations_from_previous_bb, process_block):
14059         Likewise.
14060         * local-propagation (mono_cprop_invalidate_values,
14061         mono_local_cprop_bb): Likewise.
14062         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14063         peephole_pass, mono_arch_output_basic_block,
14064         mono_arch_emit_prolog): Likewise.
14065         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14066         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14067         mono_arch_emit_prolog): Likewise.
14068         (insert_after_ins): Delete.
14069         * aliasing.c (print_code_with_aliasing_information,
14070         mono_build_aliasing_information, mono_aliasing_deadce):
14071         Convert to new instruction lists.
14072         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14073         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14074         mono_arch_local_regalloc, mono_arch_output_basic_block):
14075         Likewise.
14076         (insert_after_ins): Delete.
14077         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14078         peephole_pass, mono_arch_output_basic_block): Convert to
14079         new instruction lists.
14080         * mini-codegen (InstList, inst_list_prepend,
14081         insert_after_ins): Delete.
14082         (insert_before_ins, get_register_force_spilling,
14083         get_register_spilling, free_up_ireg, free_up_reg,
14084         create_copy_ins, create_spilled_store, alloc_int_reg,
14085         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14086         to new instruction lists.
14087         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14088         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14089         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14090         (insert_after_ins): Delete.
14091         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14092         mono_arch_local_regalloc, mono_arch_output_basic_block,
14093         mono_arch_call_opcode): Convert to new instruction lists.
14094         (insert_after_ins): Delete.
14095         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14096         peephole_pass, mono_arch_output_basic_block,
14097         mono_arch_emit_prolog): Convert to new instruction lists.
14098
14099 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14100
14101         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14102
14103         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14104         Fixes #353182.
14105
14106         * Makefile.am (version.h): Make this work with non-bash shells.
14107
14108 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14109
14110         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14111
14112 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14115         the InitializeArray optimization.
14116
14117 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14118
14119         * mini.c driver.c: Don't include os/gc_wrapper.h.
14120
14121 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14122
14123         * mini.c (print_jit_stats): Print GC statistics if available.
14124
14125 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14126
14127         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14128
14129 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14130
14131         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14132
14133 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14134
14135         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14136         
14137         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14138
14139         * driver.c (mono_main): Ditto.
14140
14141 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14142
14143         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14144
14145         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14146         in the vtable can't be encoded.
14147         (compile_method): Ditto.
14148
14149 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14150
14151         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14152         defined.
14153
14154         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14155         lmf->rbp.
14156
14157         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14158         the top LMF entry belongs to the current method.
14159
14160         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14161
14162 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14163
14164         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14165         
14166         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14167
14168         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14169
14170         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14171
14172         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14173
14174         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14175         implementation.
14176
14177         * basic-float.cs: Add an ulong->double cast test.
14178
14179 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14180
14181         * mini.c (mono_method_to_ir): Fix a warning.
14182
14183 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * mini-ops.h: Add OP_SWITCH.
14186
14187         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14188         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14189
14190 2007-12-11  Geoff Norton  <gnorton@novell.com>
14191
14192         * mini-s390x.c: Minor change to the MAX() define to allow
14193         it to compile with other gcc versions.
14194
14195 2007-12-11  Geoff Norton  <gnorton@novell.com>
14196
14197         * cpu-s390x.md:
14198         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14199
14200 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14201
14202         exceptions-arm.c (mono_arch_get_restore_context): Restore
14203         the frame pointer.
14204
14205         exceptions-arm.c (throw_exception): Save the frame pointer.
14206         This is a partial fix for #323747. Only the client side is
14207         fixed.
14208
14209 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14210
14211         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14212         was using an unrelated variable to log the class which
14213         needed the cctor to be called. This was crashing on arm.
14214
14215 2007-12-09  Robert Jordan  <robertj@gmx.net>
14216
14217         * mini-x86.c (mono_arch_emit_epilog):
14218         Consider all kinds of 64-bit types. Fixes #323114.
14219
14220 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14221
14222         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14223
14224 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14225
14226         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14227
14228 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14229
14230         * mini.c: run type ctor before allocating an object, not only
14231         when running it's constructor method (fixes at least part of bug #342507).
14232
14233 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14234         
14235         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14236         
14237         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14238         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14239         function.
14240
14241         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14242         mono_generic_class_init_trampoline () the same as it is done with the other
14243         trampolines.
14244
14245         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14246         aot-runtime.c aot-compiler.c: Implement AOT support.    
14247
14248 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14249
14250         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14251         build for archs which don't have the vtable trampoline defined
14252         yet.
14253
14254 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14255
14256         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14257
14258         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14259
14260         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14261
14262         * tramp-<ARCH>.c: Use the new helper function.
14263
14264 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14265
14266         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14267         trampoline call, which takes a vtable argument.
14268
14269         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14270         OP_TRAMPCALL_VTABLEs like other calls.
14271
14272         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14273         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14274         call.  Implemented a support function which fetches the vtable
14275         from a register set.
14276
14277         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14278         Implemented a generic class init trampoline, using the
14279         OP_TRAMPCALL_VTABLE opcode.
14280
14281         * mini.c: Implemented static field access when sharing generic
14282         code.  This implies initing the class using the new
14283         OP_TRAMPCALL_VTABLE call.
14284
14285 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14286
14287         * mini.c: Don't compile methods with sharing enabled if their
14288         classes are disabled for sharing.
14289
14290 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14291
14292         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14293         opcodes. Fixes #346563.
14294
14295         * objects.cs: Add a new test.
14296
14297         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14298
14299         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14300         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14301
14302 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14303
14304         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14305
14306 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14307
14308         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14309         code stream.
14310
14311 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14314
14315         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14316         optimization in the AOT case.
14317         
14318 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14319
14320         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14321         
14322         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14323
14324         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14325
14326         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14327
14328         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14329         is created by the inlined delegate ctor.
14330
14331         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14332
14333         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14334
14335 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14336
14337         * cpu-x86.md: Fix the length of ckfinite.
14338
14339 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14340
14341         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14342         
14343         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14344         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14345
14346         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14347
14348         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14349         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14350
14351 2007-11-28  Martin Baulig  <martin@ximian.com>
14352
14353         * mini-x86.c
14354         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14355         after creating the trampoline.
14356
14357 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14358
14359         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14360
14361         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14362         the same version.
14363
14364         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14365         instead of the calling method to help AOT.
14366
14367         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14368
14369 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14370
14371         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14372         is defined.
14373
14374 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14375
14376         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14377         
14378         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14379         (encode_method_ref): No need to handle generic method definitions specially.
14380
14381         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14382
14383         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14384         decode_klass_info.
14385
14386         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14387         encode_klass_info.
14388         (compile_method): Enable generic sharing.
14389
14390 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14391
14392         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14393         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14394
14395         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14396         generic code.
14397
14398         * mini-trampolines.c: Fix a warning.
14399
14400         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14401         NEW_PCONST.
14402         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14403         (generic_class_is_reference_type): Remove unused function.
14404
14405         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14406         in the generic vtable trampoline case.
14407
14408         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14409         
14410         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14411         return an AOT method based on a vtable slot.
14412
14413         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14414
14415         * mini.c (mini_get_vtable_trampoline): Export this.
14416
14417 2007-11-22  Martin Baulig  <martin@ximian.com>
14418
14419         * debug-debugger.h
14420         (MonoDebuggerInfo): Move `debugger_version' up.
14421
14422 2007-11-22  Martin Baulig  <martin@ximian.com>
14423
14424         * mini-amd64.c
14425         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14426
14427         * mini-trampolines.c
14428         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14429         after compiling the method.
14430
14431 2007-11-20  Martin Baulig  <martin@ximian.com>
14432
14433         * debug-mini.c
14434         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14435         (mono_debugger_remove_breakpoint): Likewise.
14436         (mono_debugger_check_breakpoints): Likewise.
14437
14438         * debug-debugger.c: Implement the new breakpoint interface here.
14439
14440 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14441
14442         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14443         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14444
14445         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14446
14447 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14448
14449         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14450
14451         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14452         mini.c.
14453
14454         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14455         mini.c.
14456
14457         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14458         returning a vtype in a register.
14459
14460         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14461         here from the arch specific code.
14462
14463         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14464         mini.c.
14465
14466         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14467         (mono_arch_emit_prolog): Increment maximum prolog size.
14468
14469         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14470         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14471
14472         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14473         MonoGenericSharingContext.
14474
14475         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14476         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14477
14478 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14479
14480         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14481         which extract fields out of the runtime generic context.  Full
14482         sharing of the NEWARR opcode.
14483
14484 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14485
14486         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14487         --enable-minimal=ssa.
14488
14489 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14490
14491         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14492         mono_marshal_get_delegate_invoke () signature change.
14493
14494 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14495
14496         * mini.c: Removed the shared context in favor of the generic
14497         sharing context.  Allocate the MonoJitInfo structure with room for
14498         the generic sharing context if it's needed.
14499
14500         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14501         domain-internals.h now.
14502
14503         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14504
14505         * generic-sharing.c: Several changes for working without a shared
14506         context and instead operating on open types instead.
14507
14508 2007-11-12  David S. Miller  <davem@davemloft.net>
14509
14510        * inssel-sparc.brg: Fix double instruction emit.
14511
14512 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14513
14514         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14515         Get/Set/Address methods.
14516         
14517         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14518         mono_marshal_get_delegate_invoke signature change.
14519
14520 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14521
14522         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14523         This can happens with dynamic methods. Fixes the other bug in #322722.
14524
14525 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14526
14527         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14528         BX call sequence.
14529
14530         * mini-arm.c (arm_patch): Implement patching of BX call
14531         sequence. Fixes one of the bugs in #322722.
14532
14533 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14534
14535        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14536        under Linux.  We only need to flush every 32-byte cache line.    
14537
14538 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14539
14540         * mini.c:
14541         move_basic_block_to_end: Add branches when needed, eventually creating
14542         a new BB.
14543         optimize_branches: added a parameter that tells if it's ok to create
14544         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14545         and avoid calling move_basic_block_to_end when it's not ok.
14546         Fixes bug 318677.
14547
14548 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14549
14550         * mini.c: Abort inlining call to InitializeArray if something
14551         looks wrong.  Let the icall handle it, which now has proper safety
14552         checks.
14553
14554 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14555
14556         * mini.c (mono_spill_call): add support for soft-float.
14557
14558         * mini.c (mono_method_to_ir): add support for soft-float
14559         to inlined functions that return float.
14560
14561         * mini.c (mono_method_to_ir): add support for soft-float
14562         to cee_stsfld opcode on float fields.
14563
14564 2007-11-05  Geoff Norton  <gnorton@novell.com>
14565
14566         * mini-x86.h: Fix the structure access for X86 Leopard.
14567
14568
14569 2007-11-05  Martin Baulig  <martin@ximian.com>
14570
14571         * mini-trampolines.c
14572         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14573         after compiling the method to notify the debugger.
14574
14575 2007-11-05  Martin Baulig  <martin@ximian.com>
14576
14577         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14578
14579 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14580
14581         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14582         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14583
14584 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14585
14586         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14587         native-to-managed wrappers.
14588         
14589 2007-11-01  Geoff Norton  <gnorton@novell.com>
14590
14591         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14592         members.
14593
14594 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14595
14596         * mini.c, mini-x86.c: when getting back from unmanaged code
14597         to managed via a marshaled delegate we also need to set the
14598         right domain.
14599
14600 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14601
14602         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14603         for amd64.
14604
14605 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14606
14607         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14608         let the debugger or other external agents to tell the JIT when
14609         a sw breakpoint has been inserted in the code that the JIT needs
14610         to be able to inspect.
14611
14612 2007-10-31  Martin Baulig  <martin@ximian.com>
14613
14614         * debug-debugger.h
14615         (MonoDebuggerInfo): Remove `runtime_class_init'.
14616
14617 2007-10-30  Martin Baulig  <martin@ximian.com>
14618
14619         * debug-mini.h
14620         (mono_debugger_thread_created): Added `MonoThread *' argument.
14621         (mono_debugger_extended_notification): New public method.
14622         (mono_debugger_trampoline_compiled): New public method.
14623
14624         * debug-mini.c
14625         (MonoDebuggerThreadInfo): Added `thread' and
14626         `extended_notifications' fields.
14627
14628         * debug-debugger.c
14629         (debugger_executable_code_buffer): New static variable.
14630
14631         * debug-debugger.h
14632         (MonoDebuggerInfo): Added `executable_code_buffer',
14633         `executable_code_buffer_size', `breakpoint_info_area',
14634         `breakpoint_table' and `breakpoint_table_size'.
14635
14636 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14637
14638         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14639         that IP  either is an unused value or the vtable pointer. IMT 
14640         calls use vtable + offset now. Reduced by almost half the size
14641         of IMT entries.
14642
14643 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14644
14645         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14646         defines to access param registers. Replace long usage with
14647         gsize as sizeof(long) != sizeof(void*) on Win64.
14648
14649         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14650         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14651         instead of non-existant _GetAddressOfReturnAddress.
14652
14653         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14654         param registers. Save/restore %rdi and %rsi in MonoLMF.
14655
14656         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14657         param registers. Modify (throw_exception) signature to take 
14658         %rdi and %rsi on Win64. 
14659
14660         Code is contributed under MIT/X11 license.
14661
14662 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14663
14664         * helpers.c: unlink debugging output files.
14665
14666 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14667
14668         * mini.c: Move mono_create_ftnptr () to object.c.
14669
14670 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14671
14672         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14673         optional. This function can now be used to disassemble code generated
14674         outside the JIT such as trampolines and IMT thunks.
14675
14676         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14677
14678         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14679         vtable pointer from a ldr instruction.
14680
14681         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14682         new IMT call sequence.
14683
14684         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14685         call sequence for interface invocations.
14686
14687         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14688         for imt support. This function is empty since IMT on ARM requires no
14689         special handling on the IR side.
14690
14691         * mini-arm.c (mono_arch_find_imt_method): added, required for
14692         imt support.
14693
14694         * mini-arm.c (mono_arch_find_this_argument): added, required
14695         for imt support.
14696
14697         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14698         a ldr instruction to load a value stored in the code stream.
14699
14700         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14701         for imt support.
14702
14703
14704 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14705
14706         * mini.c (mini_init): Install the jump trampoline callback.
14707
14708 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14709
14710         * mini-trampolines.c: handle synchronized methods with the common
14711         vtable trampoline (bug #335601).
14712
14713 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14714
14715         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14716
14717         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14718         64 bit platforms.
14719
14720         * mini-ia64.h mini-ia64.c: Add support for IMT.
14721
14722         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14723         prolog. Fixes #331958.
14724
14725 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14726
14727         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14728
14729 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14730
14731         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14732         trampoline.
14733
14734 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14735
14736         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14737         trampoline.
14738
14739 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14740
14741         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14742         trampoline.
14743
14744 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14745
14746         * mini-trampolines.c: changed the magic rampoline to understand
14747         the common vtable trampoline method: the method to invoke is
14748         determined by the vtable displacement of the call.
14749
14750 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14751
14752         * mini.c, mini.h: register the common vtable trampoline if the
14753         architecture supports it.
14754
14755 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14756
14757         * cpu-amd64.md: use the correct max length for tls_get.
14758
14759 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14760
14761         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14762         CEE_STELEM_ANY. Fixes #333696.
14763
14764 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14765
14766         * exceptions-x86.c: provide more graceful handling of the case where
14767         we followed a bogus function pointer from managed code (bug #332866).
14768
14769 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14770
14771         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14772         replaces the generic_shared flag and will carry more information
14773         in the future.
14774
14775         * generic-sharing.c: Added mini_type_stack_size() which allows
14776         allows open types if given a generic sharing context.
14777         mini_get_basic_type_from_generic() takes a
14778         MonoGenericSharingContext* instead of a MonoCompile* now.
14779
14780         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14781         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14782         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14783         changes above.  Just passing arguments through to the right
14784         places.
14785
14786 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini-arm.c: unify the call emission to emit_code_seq().
14789
14790 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14791
14792         * tramp-arm.c: reduced the trampoline size.
14793
14794 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14795
14796         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14797         variable handling out of arch-specific code.
14798
14799 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14800
14801         * mini-arm.c: implemented fast delegate dispatch.
14802
14803 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14804
14805         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14806         that fp elimination is turned off if the space required by locals is too
14807         big. Fixes #331958.
14808
14809 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14810
14811         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14812         ARM to the new style trampoline.
14813
14814 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14815
14816         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14817
14818         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14819
14820 2007-10-09  Martin Baulig  <martin@ximian.com>
14821
14822         * debug-debugger.h
14823         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14824         `field_info_offset_offset'.     
14825
14826 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14827
14828         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14829         removed more internal usage of the r11 register and made it available
14830         to the register allocator.
14831
14832 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14833
14834         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14835         when sharing generics and treat type variables as references.
14836
14837 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14838
14839         * mini-ppc.c: started removing the internal uses of register r11
14840         to eventually allow the register allocator to manage it as an
14841         additional available register.
14842
14843 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14844
14845         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14846
14847 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14848
14849         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14850         specific trampolines as they are not performance critical as a jump
14851         target (maybe align as before only for AOT code?). This saves about
14852         200 KB of native code on x86 for monodevelop startup.
14853
14854 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14855
14856         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14857         monodevelop startup.
14858
14859 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14860
14861         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14862
14863         * mini-sparc.h mini-sparc.c: Implement IMT support.
14864
14865         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14866         its smaller and doesn't clobber sparc_g1.
14867
14868         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14869
14870 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14871
14872         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14873
14874 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14875
14876         * mini-ppc.c: implemented fast delegate invocation.
14877
14878 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14879
14880         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14881
14882 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14883
14884         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14885         code to the new style trampoline in preparation for IMT support.
14886
14887 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14888
14889         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14890         systems already. This also reduces the specific trampiline sizes and
14891         prepares for the use of r12 as the IMT identifier register.
14892
14893 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14894
14895         * mini-mips.h: endianess fix (simplified from a patch by
14896         Thomas Kunze <thommy@tabao.de>, bug #323737).
14897
14898 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14899
14900         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14901         to access ucontext fields and enable netbsd support
14902         (partially from Magnus Henoch <mange@freemail.hu>).
14903
14904 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14905
14906         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14907         use the preprocessor from the CPP env var if it is set.
14908
14909 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14910
14911         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14912         code, before interface_offset gets used.
14913
14914 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14915
14916         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14917         mono_class_setup_vtable () before accessing klass->vtable.
14918
14919 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14920
14921         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14922         hackish.
14923
14924 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14925
14926         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14927         IMT slots (this saves hundreds of KB of memory in programs like
14928         IronPython and Monodevelop).
14929
14930 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14931
14932         * mini.c: print the delegate counter.
14933
14934 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14935
14936         * mini-x86.c: make it easier to enable the debugging code for IMT
14937         slots.
14938
14939 2007-09-28  Martin Baulig  <martin@ximian.com>
14940
14941         * debug-debugger.h
14942         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14943         `mono_method_klass_offset' and `mono_method_token_offset'.
14944
14945 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14946
14947         * mini.c: First generics sharing implementation.  Can only share
14948         in very simple cases.  If sharing doesn't work it falls back to
14949         dedicated compilation.
14950
14951         * mini.h: Flag in MonoCompile to specify whether generic
14952         compilation is shared.  Flags enum for marking which generic inst
14953         of a context is used.  Prototypes for helper functions.
14954
14955         * generic-sharing.c: Helper functions for generic method sharing.
14956
14957         * optflags-def.h: Optimization flag (gshared) for enabling generic
14958         method sharing added.
14959
14960         * Makefile.am: generic-sharing.c added.
14961
14962 2007-09-19 Daniel Nauck <dna@mono-project.de>
14963
14964         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14965
14966 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14967         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14968         fixes bug 325507.
14969
14970 2007-09-19  Martin Baulig  <martin@ximian.com>
14971
14972         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14973         mono_debug_cleanup() is now part of mono_cleanup().
14974
14975 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14976
14977         * driver.c (mono_main): Fix a warning.
14978
14979 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14980
14981         * aot-compiler.c: Optimize various parts when processing large assemblies.
14982         Fixes ##325568.
14983
14984         * mini.c (mono_patch_info_hash): Improve hash function.
14985
14986 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14987
14988         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14989         
14990         Code is contributed under MIT/X11 license.
14991
14992 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14993
14994         * mini.c (mini_init): Fix a leak.
14995
14996         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14997
14998 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14999
15000         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
15001
15002 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15003
15004         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
15005
15006 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15007
15008         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
15009         variance tests.
15010
15011         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
15012
15013         * mini.c (handle_alloc): Enable managed allocators in AOT code.
15014
15015         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
15016
15017         * aot-runtime.c (decode_patch_info): Ditto.
15018
15019 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15020
15021         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
15022         static case. Cache delegates in architecture specific code, 
15023         based on number of parameters.
15024         
15025         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15026         in architecture specific code, based on number of parameters.
15027         
15028         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15029         caching happen in architecture specific code now.
15030         
15031         Code is contributed under MIT/X11 license.
15032
15033 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15034
15035         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15036         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15037         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15038
15039         Code is contributed under MIT/X11 license.
15040
15041 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15042         * mini.c: (mono_thread_abort) Fixed bug #82416.
15043
15044 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15045
15046         * mini.: hook the new managed GC allocation feature into the JIT.
15047
15048 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15049
15050         * mini.c: implementation for the new runtime tls opcode.
15051
15052 2007-09-11  Martin Baulig  <martin@ximian.com>
15053
15054         * debug-debugger.h
15055         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15056         `mono_method_inflated_offset'.
15057
15058 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15059
15060         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15061         async exceptions into a method.
15062
15063         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15064         purpose of testing whenever the unwinder works at every instruction.
15065
15066 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15067
15068         * mini.c: check accessibility of method used in ldftn (fixes
15069         bug #82635).
15070
15071 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15072
15073         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15074
15075         * inssel.brg: Fix a warning.
15076
15077 2007-09-03  Martin Baulig  <martin@ximian.com>
15078
15079         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15080         now takes the `main_method' as argument.
15081
15082 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15083
15084         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15085
15086 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15087
15088         * driver.c: include the cil-coff.h header on Windows.
15089         
15090         Code is contributed under MIT/X11 license.
15091
15092 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15093
15094         * mini.c, driver.c: don't include the cil-coff.h header.
15095
15096 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15097
15098         * mini.c: flag places that needs fixes fo soft-float support.
15099
15100 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15101
15102         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15103         endian systems (partially from Dean Jenkins, bug #81924).
15104
15105 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15106
15107         * mini.c (check_linkdemand): Remove embedded reference object in
15108         call to LinkDemandSecurityException.
15109         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15110         with an IntPtr instead of a reference object.
15111
15112 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15113
15114         * mini.c (handle_initobj): Handle alignment properly.
15115
15116         * inssel.brg (mini_emit_memset): Ditto. 
15117
15118         * inssel.brg (mini_emit_memcpy): Ditto. 
15119
15120         * inssel-sparc.brg: Ditto.              
15121
15122         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15123
15124 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15125
15126         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15127         exceptions raised in unmanaged code. Fixes part of #82594.
15128
15129 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15130
15131         * mini.c (mono_method_to_ir), declsec.c
15132         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15133
15134 2007-08-22  Martin Baulig  <martin@ximian.com>
15135
15136         * debug-mini.h
15137         (MonoDebuggerThreadInfo): New typedef.
15138         (mono_debugger_thread_table): New global variable.
15139         (mono_debugger_thread_created): New public function.
15140         (mono_debugger_thread_cleanup): New public function.
15141
15142         * debug-debugger.h
15143         (MonoDebuggerInfo):
15144         - removed `get_current_thread' and `lookup_assembly'.
15145         - removed `data_table'.
15146         - added `thread_table'.
15147
15148         * mini.c
15149         (mono_thread_start_cb): Call mono_debugger_thread_created().
15150         (mono_thread_attach_cb): Likewise.
15151         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15152         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15153         initial domain.
15154
15155         * driver.c (mono_main): Move mono_debug_init() up, before calling
15156         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15157
15158 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15159
15160         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15161         together when passing several arguments of type double (gives a small
15162         speedup and saves a few bytes of generated code).
15163
15164 2007-08-20  Jb Evain  <jbevain@novell.com>
15165
15166         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15167
15168 2007-08-20  Jb Evain  <jbevain@novell.com>
15169
15170         * mini.c (mono_method_to_ir): throw MethodAccessException
15171         and FieldAccessException instead of InvalidProgramException.
15172
15173 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15174
15175         * mini.c: CoreCLR security checks.
15176
15177         * mini.h: Removed MonoSecurityMode (moved to
15178         metadata/security-manager.h) and mono_security_mode global var
15179         (replaced by set/get functions in security-manager.h).
15180
15181         * driver.c: Added "core-clr-test" security mode for testing.  Used
15182         set-function for setting security mode.
15183
15184 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15185
15186         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15187         the new jit_info_table.
15188
15189         * driver.c: Test code for the new jit_info_table (enabled by the
15190         define MONO_JIT_INFO_TABLE_TEST).
15191
15192 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15193
15194         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15195         detection of call <REG> instruction sequence. Fixes build on freebsd.
15196
15197 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15198
15199         * mini-exceptions.c: Fix a warning.
15200
15201 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15202
15203         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15204         stack overflow handling code on amd64 too.
15205
15206         * mini-exceptions.c (mono_setup_altstack): Make this use 
15207         mono_thread_get_stack_bounds ().
15208
15209         * mini-x86.h: Disable sigaltstack on solaris x86.
15210
15211 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15212
15213         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15214
15215 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15216
15217         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15218
15219 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15220
15221         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15222
15223         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15224
15225 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15226
15227         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15228         due to alignment.
15229
15230 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15231
15232         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15233         to be emitted (bug #82281).
15234
15235 2007-08-01  Martin Baulig  <martin@ximian.com>
15236
15237         Merged the `debugger-dublin' branch.
15238
15239         * debug-debugger.h (MonoDebuggerInfo):
15240         Removed the `old_*' compatibility entries.
15241         Added `debugger_version' and `data_table'.
15242         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15243         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15244
15245         * debug-mini.c
15246         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15247         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15248         instead of a `gconstpointer'.
15249         (mono_debugger_insert_method_breakpoint): Return a
15250         `MonoDebugMethodAddressList *'.
15251
15252 2007-06-28  Martin Baulig  <martin@ximian.com>
15253
15254         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15255
15256 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15257
15258         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15259         __builtin_frame_address () since it is broken on older gcc versions.
15260
15261 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15262
15263         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15264         on the stack overflow handling and made the managed stack overflows
15265         catchable in most cases using soft guard pages.
15266         * exceptions-x86.c: added code to restore the protection in the soft
15267         guard pages at the end of exception handling.
15268
15269 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15270
15271         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15272
15273 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15274
15275         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15276         exception handling.
15277
15278 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15279
15280         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15281         signal handling support until it has been ported to the new mechanism.
15282         * mini.c: fixed stack overflow detection and use the new
15283         architecture code  to handle signals on the altstack.
15284
15285 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15286
15287         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15288         stack overflows on the alt stack.
15289
15290 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15291
15292         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15293         stack overflows on the alt stack.
15294
15295 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15296
15297         * exceptions-ppc.c: cleanup preparing for altstack support.
15298
15299 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15300
15301         * exceptions-arm.c: cleanup preparing for altstack support.
15302
15303 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15304
15305         * mini.c (print_jit_stats): Output hazard pointer stats.
15306
15307 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15308
15309         * driver.c, mini.c: Replaced security mode flags with a single
15310         enum variable.
15311
15312 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15313
15314         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15315
15316 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15317
15318         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15319         (which doesn't do anything yet) for activating Core CLR
15320         (Silverlight) security.
15321
15322 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15323
15324         * mini-codegen.c: work around a possible gcc bug on arm.
15325
15326 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15327
15328         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15329         message for platforms that don't support AOT compilation.
15330
15331 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15332
15333         * mini.h, mini.c, driver.c: temporary smcs hack.
15334
15335 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15336
15337         * mini-arm.h, mini-arm.c: arm EABI fixes.
15338
15339 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15340
15341         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15342         case.
15343
15344         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15345         trampolines taking a method argument.
15346
15347         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15348
15349         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15350         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15351
15352         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15353         JIT compilation throws an exception. Fixes #82050.
15354
15355 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15356
15357         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15358         with the MONO_EXCEPTION_ defines.
15359
15360 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15361
15362         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15363         #82117.
15364         
15365         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15366         the cause of an assertion.
15367
15368 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15369
15370         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15371         removed.
15372
15373 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15374
15375         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15376         assert. Should fix #82103.
15377
15378 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15379
15380         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15381         here too. Fixes #82095.
15382
15383         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15384         addresses.
15385
15386         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15387
15388         * mini-amd64.h: Enable IMT for amd64.
15389         
15390         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15391
15392 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15393
15394         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15395
15396 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15397
15398         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15399         as soon as check_linkdemand sets an exception_type.
15400
15401 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15402
15403         * mini-x86.c: fixed offsets for IMT call sequence.
15404         * mini-x86.h: enable IMT again.
15405
15406 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15407
15408         * trace.c (mono_trace_enter_method): Decode MonoType too.
15409
15410         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15411
15412         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15413
15414         * mini-amd64.c: Add preliminary IMT implementation.
15415         
15416 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15417
15418         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15419         understand the new IMT-base interface invocation (thanks to
15420         Daniel Nauck for the report and the remote debugging session).
15421
15422 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15423
15424         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15425
15426 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15427
15428         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15429
15430 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15431
15432         * mini-trampolines.c: implement AOT IMT support.
15433         * mini-x86.h: enable IMT support for wider testing.
15434
15435 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * inssel.brg (emit_imt_argument): Add aot support here.
15438
15439         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15440
15441 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15442
15443         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15444         of the IMT implementation, partially from massi, with my
15445         implementation of the bsearch sequence. Disabled by default until
15446         the AOT code is implemented.
15447
15448 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15449
15450         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15451
15452         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15453
15454 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15455
15456         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15457         arch-independent IMT JIT code from Massimiliano
15458         Mantione (massi@ximian.com) with small cleanups from me.
15459
15460 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15461
15462         * Makefile.am: fix svn invocation to get the svn revision to be
15463         independent of the local language (build fix).
15464
15465 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15466
15467         * mini.c (inline_method): Reset cfg->exception_type if the
15468         inlining is aborted.  Fixes: 82049.
15469
15470 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15471
15472         * mini.c: remove assert from exception handling code when exception_ptr
15473         is not set.
15474
15475 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15476
15477         * mini.c (mono_codegen): Add an assert.
15478
15479         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15480         enter and leave code.
15481         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15482
15483 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15484
15485         * mini-ppc.c: fixed memory corruption for localloc(0)
15486         (bug #81852).
15487
15488 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15489         
15490         * mini.c: Fix warnings.
15491
15492 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15493
15494         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15495         to emit better double->int conversions.
15496
15497 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15498
15499         * mini.c: the provided Min/Max optimizations are valid for unisgned
15500         ints.
15501
15502 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15503
15504         * 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
15505
15506 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15507
15508         * mini.c (mono_running_on_valgrind): Add support for reporting the
15509         method and  its boundaries to valgrind.
15510
15511 2007-06-28  Martin Baulig  <martin@ximian.com>
15512
15513         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15514
15515 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15516
15517         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15518
15519         * generic.2.cs: Add new test case.
15520
15521 2007-06-25  Martin Baulig  <martin@ximian.com>
15522
15523         Merged the `debugger-dublin' branch.
15524
15525         * debug-mini.c
15526         (mono_debugger_insert_method_breakpoint): New public method.
15527         (mono_debugger_remove_method_breakpoint): Likewise.
15528         (mono_debugger_check_breakpoints): New static method.
15529         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15530
15531         * debug-debugger.h (MonoDebuggerInfo):
15532         Renamed (to keep backward compatibility in the vtable):
15533         `insert_breakpoint' -> `old_insert_breakpoint'.
15534         `remove_breakpoint' -> `old_remove_breakpoint'.
15535         `create_string' -> `old_create_string'.
15536         `lookup_class' -> `old_lookup_class'.
15537         `lookup_type' -> removed; changed into a dummy field.
15538         `lookup_assembly' -> `old_lookup_assembly'.
15539         Added (same functionality, but different signature):
15540         `create_string', `lookup_class', `lookup_assembly'
15541         Added new:
15542         `get_method_addr_or_bpt', `remove_method_breakpoint',
15543         `runtime_class_init'.
15544
15545         * debug-debugger.c: Merged the `debugger-dublin' branch.
15546
15547 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15548
15549         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15550         well.
15551         (peephole_pass): Likewise.
15552
15553 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15554
15555         * driver.c: hopefully make setaffinity work also for ancient
15556         versions of linux.
15557
15558 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15559
15560         * driver.c : win32 build fix.
15561
15562 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15563
15564         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15565         processor if it is set.
15566
15567 2007-06-21  Martin Baulig  <martin@ximian.com>
15568
15569         * debug-mini.h: New file.
15570
15571         * debug-mini.c
15572         (mono_debugger_insert_breakpoint_full): Moved here from
15573         ../metadata/mono-debug-debugger.c.
15574         (mono_debugger_remove_breakpoint): Likewise.
15575         (mono_debugger_breakpoint_callback): Likewise.
15576
15577 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15578
15579         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15580         changes in MonoGenericClass.
15581
15582 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15583
15584         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15585
15586 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15587
15588         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15589         removal of MonoGenericMethod.
15590
15591 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15592
15593         * mini-exceptions.c: hooks for the exception events profiling API.
15594
15595 2007-06-14  Randolph Chung  <tausq@debian.org>
15596
15597         * Makefile.ma: Add hppa target.
15598         * mini-arch.h: Include mini-hppa.h
15599         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15600         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15601         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15602
15603 2007-06-14  Randolph Chung  <tausq@debian.org>
15604
15605         * inssel.brg: Add rules for "chained" compare-branch operations so that
15606         a single compare op can affect multiple branches.  Adjust cost for
15607         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15608         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15609         cost for some rules so that they can more easily be overridden by
15610         per-arch rules (with fixes from lupus).
15611         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15612
15613 2007-06-13  Randolph Chung  <tausq@debian.org>
15614
15615         * mini-ops.h: Reorder branch ops so that they match the order of the
15616         corresponding CEE_* ops.  The code expects them this way.
15617         Add new ops for HPPA target.
15618         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15619
15620 2007-06-13  Randolph Chung  <tausq@debian.org>
15621
15622         * mini-exceptions.c: Handle cases where the stack grows towards
15623         larger addresses.
15624         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15625
15626 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15627
15628         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15629         counter.
15630         * driver.c: explain where a non-matching corlib is found.
15631
15632 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15633
15634         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15635
15636 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15637
15638         * mini-exceptions.c: Generate a method profile leave event during
15639         an exception to ensure that the profiler gets notified.
15640
15641 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15642
15643         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15644         branch.
15645
15646         * cpu-amd64.md: Add long_and/or/xor opcodes.
15647
15648 2007-06-06  Wade Berrier  <wberrier@novell.com>
15649
15650         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15651         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15652         length of instruction shr_imm (expected 8, got 10)
15653
15654 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15655
15656         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15657
15658 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15659
15660         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15661         MonoInternalHashTable again (fixed bug in the internal hash table
15662         code).
15663
15664 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15665
15666         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15667         Have to figure out what makes it crash the SWF regression.
15668
15669 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15670
15671         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15672
15673 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15674
15675         * mini.c: optimize out the type check when storing null in a
15676         reference array.
15677
15678 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15679
15680         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15681         MonoInternalHashTable.
15682
15683 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15684
15685         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15686         signed integer methods.
15687
15688 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15689
15690         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15691         permanently since the current approach doesn't work.
15692
15693 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15694
15695         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15696         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15697
15698 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15699
15700         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15701         the sreg2==rdx case.
15702         
15703         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15704         account if it contains a rex prefix.
15705         (peephole_pass): Handle OP_FMOVE as well.
15706
15707 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15708
15709         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15710         as it causes regressions.
15711
15712 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15713
15714         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15715         static case as well.
15716
15717         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15718
15719         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15720         (mono_arch_get_this_arg_from_call): Ditto.
15721
15722         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15723
15724         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15725         invoke_impl field.
15726
15727         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15728         (mono_arch_get_this_arg_from_call): Ditto.
15729
15730         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15731         
15732         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15733         try to create optimized invoke code and use that for further invocations. 
15734         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15735
15736         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15737
15738 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15739
15740         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15741         sealed classes or methods.
15742         *devirtualization.cs: tests for the new optimization
15743
15744 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15745
15746         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15747         by the update_volatile () function.
15748
15749 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15750
15751         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15752         require it.
15753
15754         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15755
15756 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15757
15758         * mini.c: Add configure checks for header files.
15759         * mini-x86.c: Add configure checks for header files.
15760         * trace.c: Add configure checks for header files.
15761         * aot-runtime.c: Add configure checks for header files.
15762         * aot-compiler.c: Add configure checks for header files.
15763         * driver.c: Add configure checks for header files.
15764         * mini-codegen.c: Add configure checks for header files.
15765         
15766         Code is contributed under MIT/X11 license.
15767
15768 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15769
15770         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15771         icompare_imm -128 + op_iclt. Fixes #81703.
15772
15773 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15774
15775         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15776
15777 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15778
15779         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15780         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15781         so that all isinst checks now use "interface_bitmap".
15782
15783 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15784
15785         * cpu-amd64.md (jmp): Fix a warning.
15786
15787         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15788
15789         * basic.cs: Add new regression test.
15790
15791         * basic.cs: Remove test which is now in basic-long.cs.
15792
15793         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15794
15795         * basic-long.cs: Add new test.
15796         
15797 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15798
15799         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15800
15801 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15802
15803         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15804
15805         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15806         places.
15807         
15808         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15809         throwing code a bit.
15810
15811         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15812         the exception throwing code a bit.
15813
15814         * mini-x86.c (get_call_info): Allocate result from a mempool.
15815
15816 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15817
15818         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15819
15820         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15821
15822         * mini.h (MonoCompile): Add 'token_info_hash' field.
15823
15824         * mini.c: Save token->method associations during compilation so the AOT 
15825         compiler can use it.
15826         
15827         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15828         which reference generic classes and methods.
15829
15830 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15831
15832         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15833
15834         * aot-compiler.c (compile_method): Fix a typo in a comment.
15835
15836         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15837
15838         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15839         everything generic.
15840
15841         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15842
15843 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15844
15845         * mini.h (MonoCompile): Add 'args' field.
15846
15847         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15848         into cfg->args.
15849
15850         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15851
15852 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15853
15854         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15855
15856         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15857
15858         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15859         opcodes for some opcodes.
15860
15861         * mini.h *.brg *.c: Use the new opcodes.
15862
15863 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15864
15865         * mini.h: Bumped aot revision.
15866
15867         * inssel.brg: modified code generation of type checks for interfaces
15868         to use the new "MonoClass.interface_bitmap" instead of the old
15869         "MonoClass.interface_offsets".
15870
15871 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15872
15873         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15874
15875 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15876
15877         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15878         64 bit platforms.
15879
15880 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15881
15882         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15883
15884 2007-04-27  Wade Berrier  <wberrier@novell.com>
15885
15886         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15887         mini.h) to fix build.
15888
15889 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15890
15891         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15892         
15893         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15894         causes the corlib unit tests to fail.
15895
15896 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15897
15898         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15899
15900         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15901
15902         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15903         opcodes to the comparison relations.
15904
15905         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15906         opcodes to their types.
15907         
15908         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15909
15910         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15911         it in cfg->arch.cinfo.
15912
15913         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15914
15915         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15916         cfg->cil_offset_to_bb.
15917
15918 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15919
15920         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15921         created becase of initlocals.
15922
15923 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15924
15925         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15926         Sergey Tikhonov <tsv@solvo.ru>.
15927
15928 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15929
15930         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15931
15932 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15933
15934         * cpu-s390.md (break): Correct the length of break instruction.
15935
15936 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15937
15938         * mini.c: fix a couple of soft-float issues and comments.
15939
15940 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15941
15942         * trace.c (is_filenamechar): - is also a filename char.
15943
15944 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15945
15946         * mini-s390.c: Correct checking for enum type in return value processing.
15947
15948 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15949
15950         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15951         (version.h): Makefile is in the build directory.
15952
15953 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15954
15955         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15956
15957 2007-04-11  Martin Baulig  <martin@ximian.com>
15958
15959         * mini.c (can_access_member): Fix handling of generic classes;
15960         fixes #81259.
15961
15962 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15963
15964         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15965
15966 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15967
15968         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15969
15970 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15971
15972         * mini-codegen.c: make sure the right spill amount is
15973         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15974
15975 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15976
15977         * mini-ppc.c: fixes for the fp_branch_nan test.
15978
15979 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15980
15981         * basic.cs: Comment out new test which still fails on ia64.
15982
15983 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15984
15985         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15986
15987 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15988
15989         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15990
15991 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15992
15993         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15994         on 64 bit machines. Fixes part of #80738.
15995
15996         * basic.cs: Add regression test.
15997
15998 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15999
16000         * inssel.brg basic.cs: Revert previous change to fix build.
16001
16002         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
16003         platforms.
16004         
16005         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
16006
16007         * basic.cs: Add new regression test.
16008
16009 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16010
16011         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
16012         many arguments.
16013
16014 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16015
16016         * cpu-s390x.md: Correct length of break instruction.
16017
16018 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16019
16020         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
16021         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
16022
16023 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
16024
16025         * *.c: Begin WIN64 port.
16026         * mini.c:  Use correct register in profiler.
16027         * mini-amd64.c: No inline assembly on Win64.
16028         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16029         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16030         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16031         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16032         mono_arch_ip_from_context for Win64.
16033         
16034         Contributed under MIT/X11 license.
16035
16036 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16037
16038         * exceptions-amd64.c (seh_handler): Ditto.
16039
16040         * exceptions-x86.c (seh_handler): Fix a memory leak.
16041
16042 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16043
16044         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16045         mini-s390x.c: fixed peephole optimizations to deal
16046         correctly with 1 and 2 byte reload avoidance.
16047
16048 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16049
16050         * cpu-s390.md, cpu-s390x.md: update localloc length.
16051
16052 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16053
16054         * cpu-g4.md: added missing descriptions.
16055
16056 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16057
16058         *  Makefile.am: Add support so the tail tests are not executed on
16059         PowerPC as that is a known limitation of the PowerPC port.
16060
16061 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16062
16063         * runmdesc.bat:  Move to msvc directory.
16064         
16065 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16066
16067         * runmdesc.bat:  Run executable that was produced by the current
16068         target and sent via an argument.
16069         
16070 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16071
16072         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16073         #81102.
16074
16075         * generics.2.cs: Add regression test.
16076
16077 2007-03-09  Wade berrier  <wberrier@novell.com>
16078
16079         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16080
16081 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16082
16083         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16084         AOT code depends on this.
16085
16086 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16087
16088         * mini.c: more precise tracking of types in the eval stack
16089         (part of fix for bug #81044).
16090
16091 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16092
16093         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16094
16095         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16096
16097 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16098
16099         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16100
16101         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16102
16103 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16104
16105         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16106         a pointer on 64 bit systems. Fixes #80190.
16107
16108         * iltests.il: Add new regression test.
16109
16110 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16111
16112         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16113
16114 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16115
16116         * trace.c: Remove an erroneous alignemnt check when tracing.
16117           Fixes --trace on OSX86.
16118
16119 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16120
16121         * mini-$(arch).h: initialize SP in context for all the archs.
16122
16123 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16124
16125         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16126         regressions in the thread tests.
16127
16128 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16129
16130         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16131         - fixed implementation of LOCALLOC opcode
16132         - implemented non-un compare for floats
16133         - code cleanup
16134         - implementation of FDIV and CKFINITE opcodes
16135         - fixes for latest mono updates
16136         - additional arch opcodes
16137
16138 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16139
16140         * Makefile.am: simplify and merge rules for cross-compilation.
16141
16142 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16143
16144         * local-propagation.c: Actually *apply* the fix for bug 80591...
16145
16146 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16147
16148         * mini-exceptions.c: backuot part of the last change
16149         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16150
16151 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16152         * inssel.brg: Fix bug 59286.
16153
16154
16155 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16156
16157         * mini-exceptions.c: patch from Zoltan to correctly check for
16158         stack boundaries (using the stack register, not the frame register),
16159         fixes bugs #80724, #79717.
16160
16161 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16162
16163         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16164         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16165
16166         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16167         presence of frame pointer elimination.
16168
16169 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16170         
16171         * mini-x86.h: NetBSD UCONTEX_REG defines.
16172
16173 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16174
16175         * inssel-amd64.brg: Fix amd64 build.
16176
16177 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16178
16179         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16180         on amd64.
16181
16182 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16183
16184         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16185         ends.
16186
16187         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16188
16189 2007-01-30 Mark Mason <mason@broadcom.com>
16190
16191            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16192            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16193            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16194            beginning support for CEE_JMP [not quite working yet]
16195            * tramp-mips.c: LMF handling now works
16196         
16197 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16198
16199         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16200
16201         * mini.h (NULLIFY_INS): New macro.
16202
16203 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16204
16205         * mini.c: statistical profiler fix for windows, patch
16206         from Tor Lillqvist (tml@novell.com).
16207
16208 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16209         * local-propagation.c: Fix bug 80591.
16210
16211 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16212
16213         * Makefile.am: put back the --export-dynamic option as with
16214         the previous gmodule flags (thanks to Robert Jordan).
16215
16216 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16217
16218         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16219
16220         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16221         simplify and speed up the local register allocator. Also rename some fields
16222         like iassign->vassign.
16223         
16224         * regalloc.c: Remove some functions which are no longer used since their
16225         inlined version is in mini-codegen.c.
16226         
16227         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16228
16229         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16230
16231 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16232
16233         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16234         narrowing. Fixes #80622.
16235
16236         * iltests.il: Add new regresssion test. 
16237
16238 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16239
16240         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16241         debug-debugger.c, debug-debugger.h: warning fixes.
16242         * driver.c: updated copyright year and made it fit in one line.
16243
16244 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16245
16246         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16247
16248 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16249
16250         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16251
16252         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16253
16254         * iltests.il: Add new test for bug #80507.
16255
16256 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16257
16258         * mini-arm.h: use soft-float also on vfp for now.
16259
16260 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16261
16262         * mini.c: fix some more soft-float issues.
16263
16264 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16265
16266         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16267
16268 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16269         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16270         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16271         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16272
16273 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16274
16275         * mini-arm.c: typo fix.
16276
16277 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16278
16279         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16280
16281 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16282
16283         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16284         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16285
16286         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16287
16288         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16289
16290         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16291         
16292         * inssel.brg: Fix a warning.
16293
16294         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16295
16296         * abcremoval.c ssa.c ssapre.c: Update after this change.
16297         
16298         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16299
16300         * dominators.c (df_set): Use mono_bitset_union_fast.    
16301
16302 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16303
16304         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16305         mini-codegen.c: reduce relocations and memory usage for the cpu
16306         description.
16307
16308 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16309
16310         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16311
16312         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16313         to reduce their size.
16314
16315 2007-01-19 Mark Mason <mason@broadcom.com>
16316
16317         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16318         * mini-mips.c: more configuration macros, support long conditional branches, additional
16319         asserts, fix epilog instrumentation.
16320         * mini-mips.h: use standard stack walk
16321         * cpu-mips.md: increase size of div, rem and conditional branches
16322         
16323 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16324
16325         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16326         to cpu spec data.
16327
16328 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16329
16330         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16331         (compile_method): Ditto.
16332
16333         * aot-runtime.c (decode_klass_info): Ditto.
16334
16335         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16336         needed by the code generated by inssel.brg. Also fix a warning.
16337
16338 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16339
16340         * mini.c: deal with enums that become genericinsts by
16341         being nested in a generic class (bug #79956).
16342
16343 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16344
16345         * mini.c: match the generic definition to check for
16346         private access with generic types (bug #78431).
16347
16348 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16349
16350         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16351         to make life easier for people cross-compiling that insist on not
16352         using scratchbox.
16353
16354 2007-01-17 Mark Mason <mason@broadcom.com>
16355
16356         * inssel-long.brg: patch to deal with mips missing flags
16357         * inssel-long32-mips.brg: implement overflow checks
16358         * insset-mips.brg: implement overflow checks
16359         * mini-mips.h: implement conditional exception handling
16360         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16361           Remove unused code, minor cleanups.
16362         * exceptions-mips.c: minor cleanups
16363         * mini-ops.h: add mips conditional exception ops
16364         * cpu-mips.md: add mips conditional exception ops
16365
16366         
16367 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16368
16369         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16370         to deal with mips missing of flags.
16371
16372 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16373
16374         * exceptions-ppc.c: execute fault handlers.
16375
16376 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16377
16378         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16379
16380 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16381
16382         * mini.c: handle also floating point values in initialize_array.
16383
16384 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16385
16386         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16387         array initialization and make it conditional on the intrins option.
16388
16389 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16390
16391         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16392         relocations and put the patch info names close to the enum definition.
16393
16394 2007-01-15 Mark Mason <mason@broadcom.com>
16395
16396         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16397
16398 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16399
16400         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16401
16402 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16403
16404         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16405
16406 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16407
16408         * Makefile.am: distribute the mips sources.
16409
16410 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16411
16412         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16413         directly.
16414
16415 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16416
16417         * cpu-x86.md: back out for now as this triggers other regressions.
16418
16419 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16420
16421         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16422         to eax:edx, so ecx can't get allocated to them (bug #80489).
16423
16424 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16425
16426         * mini.c, mini-exceptions.c: enabled running fault handlers
16427         (bug #80469).
16428
16429 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16430
16431         * driver.c: If nothing fail, do not use the string "failed",
16432         because it makes it very annoying to view test result logs on the
16433         web. 
16434
16435 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16436
16437         * debug-debugger.c (mono_debugger_main): Rename "main" to
16438         "main_method" to prevent a warning.
16439
16440         Remove a warning for unused field.
16441
16442 2006-12-28  Martin Baulig  <martin@ximian.com>
16443
16444         * debug-debugger.c
16445         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16446
16447 2006-12-22  Martin Baulig  <martin@ximian.com>
16448
16449         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16450         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16451         seperate `.mdb_debug_info' section, so we can access it from the
16452         debugger even if the binary is stripped.
16453
16454         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16455         from the `.mdb_debug_info' here to prevent the linker from
16456         removing that section.
16457
16458         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16459         mdb-debug-info64.s.
16460
16461 2006-12-19  Robert Jordan  <robertj@gmx.net>
16462
16463         * mini-x86: enable the code to return small structures in
16464         registers for FreeBSD as well. Fixes bug #80278.
16465         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16466
16467 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16468
16469         * mini-x86.c: align the stack when calling the profiler
16470         function instrumenting the prolog (on OSX).
16471
16472 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16473
16474         * mini.c: emit a break opcode where Debugger.Break () is called.
16475
16476 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16477
16478         * mini.c (mono_method_to_ir): Provide useful information on this
16479         assert, to prevent others from debugging like I did.
16480
16481 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16482
16483         * mini.c: enable code which was incorrectly commented
16484         (bug #80235).
16485
16486 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16487
16488         * mini-x86.c: enable on OSX, too, the code to return small
16489         structures in registers.
16490
16491 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16492
16493         * mini-x86.c: remove the use of the dynamic code manager here, too.
16494
16495 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16496
16497         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16498         mono_debugger_create_notification_function() to use
16499         mono_global_codeman_reserve () instead of a dynamic code manager.
16500
16501 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16502
16503         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16504         ves_array_element_address() jit icall and use a generated
16505         managed method instead (which is about 4 times faster for a rank 3
16506         array access).
16507
16508 2006-11-29  Mark Mason  <mason@broadcom.com>
16509
16510         * basic-calls.cs: additional tests for passing
16511         structures as function arguments.
16512
16513 2006-11-29  Mark Mason  <mason@broadcom.com>
16514
16515         * mini-mips.h: disable custom exception handling
16516         * mini-mips.c: throw/rethrow should use jalr to call
16517         exception stubs.  Fixed bug with passing structures
16518         by value. More support for tracing floating point
16519         functions.
16520
16521 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16522
16523         * mini.c: fixed typo in the soft-float ldind.r4 handling
16524         (bug #80086).
16525
16526 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16527
16528         * mini.c, mini.h, driver.c: added --runtime command line
16529         option to select a different runtime than the autodetected one.
16530         * jit.h: added API for embedders to initialize with a specific
16531         runtime version.
16532
16533 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16534
16535         * mini.c: handle also boxing of r4 values (bug #80024).
16536
16537 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16538
16539         * mini-ppc.c: force indirect calls until we reserve
16540         enough address space for all the generated code.
16541
16542 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16543
16544         * exceptions-arm.c: workaround bugs in the libc definition
16545         of struct ucontext.
16546
16547 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16548
16549         * inssel.brg: fixes from me and Mark Mason.
16550
16551 2006-11-23  Dick Porter  <dick@ximian.com>
16552
16553         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16554         semaphore display now we've fixed the initial value
16555
16556 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16557
16558         * inssel.brg: partially revert the last change to fix the build.
16559
16560 2006-11-21  Mark Mason  <mason@broadcom.com>
16561
16562         * inssel.brg: Add and use compare-and-branch macros to support
16563         architectures that do not have condition code registers (ie. MIPS).
16564         * *-mips.{c,brg,md}: Fix copyright statements
16565
16566 2006-11-20  Mark Mason  <mason@broadcom.com>
16567
16568         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16569         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16570         * mini.h: Added declaration for mono_print_ins()
16571         * mini-codegen.c: added ins_spec initializer for MIPS
16572         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16573         vreg to be virtual and hreg to be non-virtual.
16574         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16575         is not yet working/implemented correctly.
16576         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16577         non-static, fixup calls to print_ins() from other parts in the file.
16578
16579 2006-11-20  Mark Mason  <mason@broadcom.com>
16580
16581         * basic-calls.cs: added tests for passing structures as arguments
16582         to calls.
16583
16584 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16585
16586         * inssel-long32.brg: optimize signed division by power of two.
16587
16588 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16589
16590         * mini-arm.c: added support for interworking with thumb code
16591         (mono must be still be built using the ARM instruction encoding).
16592
16593 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16594
16595         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16596         verifier has different rules for it.   Fixes a few verifier issues
16597         in the test suite.
16598
16599         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16600         at the end, so people know what happened.
16601
16602 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16603
16604         * brach-opts.c: in optimize_exception_target() make sure we
16605         are in a catch clause (fixes bug #79871).
16606
16607 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16608
16609         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16610         more soft-float support fixes.
16611
16612 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16613
16614         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16615         that are passed half on the stack and half in registers.
16616
16617 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16618
16619         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16620         more mips integration work from Mark E Mason 
16621         <mark.e.mason@broadcom.com>.
16622
16623 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16624
16625         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16626         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16627         tramp-mips.c: added sources for the mips port, not
16628         integrated in the build yet. Contributed by
16629         Mark E Mason <mark.e.mason@broadcom.com>.
16630
16631 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16632
16633         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16634
16635 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16636
16637         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16638         put the soft-float rules in its own file since it seems to
16639         break s390 compilation.
16640
16641 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16642
16643         * mini-arm.c: fixed wrnings.
16644
16645 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16646
16647         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16648         inssel-arm.brg: ARM support for soft-float.
16649
16650 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16651
16652         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16653         loads and stores of 32 bit fp values.
16654
16655 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16656
16657         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16658
16659         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16660         works. Fixes #79852 and #79463.
16661
16662 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16663
16664         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16665         more soft-float support WIP and fixes.
16666
16667 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16668
16669         * mini-arm.c: some VFP updates.
16670
16671 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16672
16673         * mini-exceptions.c: 0 is a valid local var offset in some
16674         architectures, don't assert (bug #78508).
16675
16676 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16677
16678         * exceptions-arm.c: fixed off by one error in stack walk code.
16679
16680 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16681
16682         * mini.h, mini.c: more precise tracking of type load exceptions.
16683
16684 2006-11-03  Robert Jordan  <robertj@gmx.net>
16685
16686         * Makefile.am: [WIN32] Add monow.exe target.
16687         * driver.c: [WIN32] Don't detach the console when debugging.
16688         Fixes bug #79797.
16689         
16690 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16691
16692         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16693
16694 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16695
16696         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16697
16698         * driver.c (mini_regression): Fix --regression with AOT.
16699
16700         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16701
16702 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16703
16704         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16705
16706         * mini-sparc.h: Don't use sigaction on sparc/linux.
16707
16708         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16709
16710         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16711
16712         * mini-exceptions.c: Add proper include files for getpid ().
16713
16714 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16715
16716         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16717         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16718         method.
16719
16720         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16721         name cache to reduce its size.
16722
16723         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16724
16725 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16726
16727         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16728         the mono_lmf TLS variable.
16729
16730         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16731         trampoline lmf frames.  
16732
16733         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16734
16735 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16736
16737         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16738         the mono_lmf TLS variable.
16739
16740         * mini-exceptions.c: Access the LMF structure through accessors.
16741
16742         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16743         variable instead of in jit_tls->lmf.
16744
16745         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16746         
16747         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16748         trampoline lmf frames.
16749
16750         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16751
16752 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16753
16754        * mini.c trace.c mini-x86.c: Revert these too.
16755         
16756        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16757        signature change.
16758
16759 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16760
16761         * genmdesc.c: removed now dead code.
16762
16763 2006-10-09  Robert Jordan <robertj@gmx.net>
16764
16765         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16766
16767 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16768
16769         * mini.h: do not leave gaps in the opcode values.
16770
16771 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16772
16773         * jit-icalls.h: flag functions as internal here, too.
16774
16775 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16776
16777         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16778         functions with the internal attribute.
16779
16780 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16781
16782         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16783
16784 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16785
16786         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16787         for soft-float.
16788
16789 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16790
16791         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16792         tail calls as on other platforms.
16793
16794         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16795
16796         * iltests.il: Add a few tailcall tests.
16797
16798 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16799
16800         * driver.c: fix loop for old compilers (bug #79521).
16801
16802 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16805
16806         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16807
16808         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16809         metadata without any code.
16810
16811         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16812         more precise debugging information using gdb.
16813
16814 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16815
16816         * inssel-ia64.brg: Make the helper methods static.
16817
16818 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16819
16820         * inssel-x86.brg: make the helper methods static.
16821
16822 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16823
16824         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16825
16826 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16827
16828         * mini.c: updates for monoburg changes.
16829         * inssel.brg: make a few helper functions static as they should.
16830
16831 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16832
16833         * Makefile.am: Move mini-codegen.c to common_sources.
16834
16835 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16836
16837         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16838         instructions.
16839         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16840         mini-ppc.h: port to use the common local register allocator.
16841
16842 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16843
16844         * mini.h: Remove the comment too then.
16845
16846 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16847
16848         * mini.h: put back backend.data which is to be used shortly and
16849         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16850         pointers on 4 byte boundaries it'd have much bigger issues running
16851         and you can ifdef it out anyway.
16852
16853 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16854
16855         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16856         MonoInst size by 4 bytes on 64 bit machines.
16857
16858 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16859
16860         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16861         replacement with more meaningful field names. Arch maintainers, please
16862         check the assigned names are good enough for your arch.
16863
16864 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16865
16866         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16867         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16868
16869 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16870
16871         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16872         relocations and memory requirements, put the optimization flags
16873         definitions in their own file.
16874
16875 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16876
16877         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16878
16879         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16880
16881 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16882
16883         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16884
16885 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16886
16887         * inssel.brg: use the correct function to get the size of an item
16888         in an array, given an element class.
16889         * aot-compiler.c: do not access class->class_size directly.
16890
16891 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16892
16893         * mini.h, debug-mini.c: added a debugging function to print
16894         info about local variables and arguments in a jitted method.
16895
16896 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16897
16898         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16899
16900         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16901
16902 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16903
16904         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16905         inner and outer loops when passing vtypes.
16906
16907 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16908
16909         * mini-ppc.c: take into account the cpu errata for cache flushing
16910         which caused some random errors (bug #79381).
16911
16912 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16913
16914         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16915         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16916
16917 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16918
16919         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16920         loaded.
16921
16922         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16923         freebsd ports tree.
16924
16925         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16926         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16927
16928         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16929         displacement.
16930
16931 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16932
16933         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16934
16935 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16936
16937         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16938         macro does not have to be changed during debugging.
16939
16940         * 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>.
16941
16942         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16943
16944         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16945         
16946         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16947         MONO_ARCH_NO_EMULATE_MUL is defined.
16948
16949         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16950
16951         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16952
16953         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16954
16955         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16956         
16957 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16958
16959         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16960         stuff to mini-exceptions.c where it is used.
16961
16962         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16963         setup code, the real one is in mini-exceptions.c.
16964
16965         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16966         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16967         some changes from the freebsd ports tree.
16968
16969         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16970         constants.
16971         
16972         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16973
16974 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16975
16976         * mini.c: on Linux, check for /proc to be mounted
16977         (bug# 79351, novell bug#201204).
16978
16979 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16980
16981         * mini.c: handle cases where pthread_attr_getstack() behaves
16982         incorrectly (bug #78096).
16983
16984 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16985
16986         * mini-arm.c: support larger stack frames (bug #79272).
16987
16988 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16989
16990         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16991
16992         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16993         tokens.
16994
16995         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16996         mono_class_from_name () to find a class from its name.
16997
16998         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16999
17000 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
17001
17002         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
17003
17004 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
17005
17006         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
17007
17008 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
17009
17010         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
17011         callinfo->trampoline.
17012
17013         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
17014         fixes #79271.
17015         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
17016         future.
17017
17018 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
17019
17020         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
17021
17022 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
17023
17024         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17025         stats.method_trampolines, it is already done by the generic trampoline code.
17026
17027         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17028         
17029 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17030
17031         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17032
17033         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17034
17035         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17036
17037         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17038         
17039         * mini.c (print_jit_stats): Print new stats.
17040
17041         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17042
17043 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17044
17045         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17046         Address on two dimensional arrays. Fixes #78729.
17047
17048         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17049
17050         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17051         a method.
17052
17053         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17054
17055         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17056         #79130.
17057         
17058         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17059         a race condition.
17060         (mini_get_ldelema_ins): Ditto.
17061
17062 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17063
17064         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17065         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17066         Fixes #79213.
17067
17068 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17069
17070         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17071         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17072
17073         * exceptions-s390x.c: Cosmetic change.
17074
17075         * tramp-s390.c: Fix warning.
17076
17077         * cpu-s390.md: Correct length of mul_imm.
17078
17079 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17080
17081         * aot-compiler.c: added binary writer with ELF backend
17082         implementation (only on Linux/x86 for now).
17083
17084 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17085
17086         * Makefile.am: Don't run net 2.0 AOT tests.
17087
17088         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17089         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17090
17091         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17092
17093 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17094
17095         * aot-compiler.c: simplified and refactored the asm-writing code
17096         to allow different backends.
17097
17098 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17099
17100         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17101
17102         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17103         little. Share patches of type TYPE_FROM_HANDLE as well.
17104
17105         * mini.c (mono_patch_info_equal): New helper function.
17106         (mono_patch_info_hash): Ditto.
17107
17108         * aot-compiler.c (emit_method_code): Fix s390 build.
17109
17110         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17111         is not handled because it is stored as a flag and not as a type ctor. Fixes
17112         #79016.
17113
17114 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17115
17116         * aot-compiler.c: Fix computation of GOT slot statistics.
17117         
17118         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17119         Also remove support for not PIC AOT.
17120
17121         * mini.h: Bump AOT file format version.
17122
17123         * objects.cs: Add a test for #78990.
17124
17125         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17126         (peter.dettman@iinet.net.au). Fixes #79087.
17127
17128         * basic-long.cs: Add a test for the above.
17129
17130 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17131
17132         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17133         
17134         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17135         code somewhat.
17136
17137 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17138
17139         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17140         exceptions.
17141
17142 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17143
17144         * mini.c: Don't verify COM proxy invoke calls
17145         
17146
17147 2006-08-10  Dick Porter  <dick@ximian.com>
17148
17149         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17150         which process is holding semaphores locked.
17151
17152 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17153
17154         * mini-ia64.c mini-amd64.c: Fix #79027.
17155
17156         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17157
17158         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17159
17160         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17161         implicit arguments in a vararg call. Fixes #79027.
17162
17163 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17164
17165         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17166         (mono_get_array_new_va_signature): Ditto.
17167
17168 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17169
17170         * aot-runtime.c: Call init_plt lazily.
17171
17172         * inssel-long.brg: Fix unsigned long->int conversion.
17173
17174         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17175
17176         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17177         that most data is now in the .rss/.data section.
17178
17179 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17180
17181         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17182
17183         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17184
17185         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17186
17187         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17188
17189         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17190         virtual call. Fixes #79010.
17191
17192         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17193         and use the result as the this argument in the real call.
17194
17195         * generics.2.cs: Add a new test for #79010.
17196         
17197 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17198
17199         * mini-x86.c: Fix a warning.
17200
17201         * aot-compiler.c: Add a bunch of statistics.
17202
17203         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17204
17205 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17206
17207         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17208
17209 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17210
17211         * 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>.
17212
17213 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17214
17215         * mini.c (mono_method_to_ir): Obtain the original method in the
17216         CIL stream and use this to perform validation.
17217
17218         Fixed: #78816
17219
17220 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17221
17222         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17223         (mono_arch_call_opcode): Ditto.
17224
17225         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17226         #78826.
17227
17228         * mini.c (mono_patch_info_dup_mp): New helper function.
17229         
17230         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17231         compilation. Fixes #78827.
17232
17233 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17234
17235         * declsec.c: Use original security informations for
17236           MONO_WRAPPER_MANAGED_TO_MANAGED.
17237
17238 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17239
17240         * mini.c: Allow Com Interop methods/classes and
17241         don't verify COM wrapper calls
17242         
17243
17244 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17245
17246         * inssel-long32.brg: Fix long->i4 checked conversion.
17247
17248         * exceptions.cs: Add a test for the above.
17249
17250 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17251
17252         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17253
17254         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17255         leaks.
17256
17257         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17258         #78775.
17259
17260 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17261
17262         * mini.c: Fix solaris/x86 exception handling.
17263
17264         * Makefile.am: Get rid of $(ICU_LIBS).
17265
17266 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17267
17268         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17269         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17270         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17271
17272         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17273
17274         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17275         this function causes a SIGSEGV.
17276
17277 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17278
17279         * mini.c: Remove unused solaris/x86 includes.
17280
17281 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17282
17283         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17284
17285 2006-06-20  Jb Evain  <jbevain@gmail.com>
17286
17287         * cpu-g4.md: fix max length of start_handler instruction.
17288
17289 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17290         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17291
17292 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17293         * ssa.c: Fixed bug 78653 for SSA based deadce.
17294         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17295         MonoInst.flags, used in SSA based deadce.
17296         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17297         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17298
17299 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17300
17301         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17302         it can end up using non executable memory on ppc64 systems
17303         running ppc32 userspace (fix from Johannes Berg).
17304
17305 2006-06-14  Dick Porter  <dick@ximian.com>
17306
17307         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17308         4.1.1
17309
17310 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17311         * mini.c: Made so that inline is locally disabled if it would
17312         trigger a .cctor, because too many apps depend on this behavior
17313         (which seems to be also the one of the MS CLR).
17314
17315 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17316
17317         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17318         No idea why this worked before.
17319
17320         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17321         which branch to outer exception clauses since they could skip the
17322         inner finally clauses. Fixes #78633.
17323
17324         * exceptions.cs: Add a test for the above.
17325
17326         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17327         Fixes #78629.
17328
17329         * iltests.il: Add a test for the above.
17330
17331 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17332
17333         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17334         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17335
17336         * iltests.il: Add a test for the above.
17337
17338 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17339
17340         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17341         
17342         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17343         methods as instrinsics.
17344
17345 2006-06-09  Wade Berrier <wberrier@novell.com>
17346
17347         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17348         (simple-cee-ops.h ssapre-mini-ops.h)
17349
17350 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17351
17352         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17353         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17354         instruction).
17355         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17356         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17357
17358 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17359
17360         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17361
17362 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17363
17364         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17365         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17366         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17367         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17368         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17369         of opcodes, so that bug 78549 should not happen again.
17370         * ssapre.c: Updated to use the renamed files.
17371
17372 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17373
17374         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17375         in OP_ATOMIC_EXCHANGE_I4.
17376
17377 2006-06-07  Wade Berrier <wberrier@novell.com>
17378
17379         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17380         in mono_debugger_create_notification_function)
17381
17382 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17383
17384         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17385         
17386         * mini.c (type_from_stack_type): Disable some changes which do not
17387         seem to work.
17388
17389         * driver.c: Reenable opts.
17390
17391         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17392         of the evaluation stack.
17393         
17394         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17395         evaluation stack trace at entry to the bblock.
17396
17397         * mini.c (merge_stacks): New function to perform verification of stack merges.
17398         Turned off by default.
17399
17400         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17401         STACK_MP.
17402         
17403 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17404
17405         * local-propagation.c: Fixed bug 78549.
17406
17407 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17408
17409         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17410
17411 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17412
17413         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17414         tramp-arm.c, tramp-ia64.c
17415         (mono_debugger_create_notification_function): Update signature to
17416         new signature and use new protocol for creating the notification
17417         function.  
17418
17419         Should fix the build.
17420
17421 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17422
17423         * exceptions-ppc.c (mono_jit_walk_stack)
17424         (ves_icall_get_frame_info): Fix the build
17425
17426 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17427
17428         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17429
17430 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17431
17432         * il2tests.2.il: New file for generics CIL tests.  Add test for
17433         #78019.
17434         * Makefile.am: Update.
17435
17436         Fix #78019
17437         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17438         to nullable types.
17439
17440 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17441
17442         * aliasing.c: Fixed bug 78311.
17443
17444 2006-05-29  Martin Baulig  <martin@ximian.com>
17445
17446         * mini-exceptions.c (mono_find_jit_info): When computing the
17447         native offset, check whether we're actually inside the method's
17448         code; call mono_debug_print_stack_frame() to format the frame.
17449         (ves_icall_System_Exception_get_trace): Call
17450         mono_debug_print_stack_frame() to format the stack frame.
17451         (ves_icall_get_trace): Update to the new debugging API.
17452         (mono_jit_walk_stack_from_ctx): Likewise.
17453         (ves_icall_get_frame_info): Likewise.
17454
17455         * mini.c (get_method_from_ip): Use the new debugging API.
17456         (mono_print_method_from_ip): Likewise.
17457
17458         * exceptions-ppc.c
17459         (mono_jit_walk_stack): Use the new debugging API.
17460         (ves_icall_get_frame_info): Likewise.   
17461
17462 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17463
17464         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17465
17466 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17467
17468         * mini.c: Added "limitator" to inline for debugging.
17469
17470 2006-05-24  Martin Baulig  <martin@ximian.com>
17471
17472         * debug-debugger.c (mono_debugger_init): Create a private,
17473         malloc()-based code manager for the notification function and
17474         intentionally leak it on exit.  This fixes the crash-on-exit race
17475         condition.
17476
17477         * tramp-amd64.c
17478         (mono_debugger_create_notification_function): Added
17479         `MonoCodeManager *' argument.
17480
17481         * tramp-x86.c
17482         (mono_debugger_create_notification_function): Added
17483         `MonoCodeManager *' argument.
17484
17485 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17486
17487         * aliasing.c: Fixed 64 bit issue.
17488         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17489         default since all known bugs are fixed (one more time!).
17490
17491 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17492
17493         * mini.c: write barrier support.
17494
17495 2006-05-23  Martin Baulig  <martin@ximian.com>
17496
17497         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17498         check at the top of the file.
17499
17500 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17501
17502         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17503         reverting changes without reason and without changelog entries.
17504
17505 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17506
17507         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17508         to a few opcodes. Fixes #78439.
17509
17510         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17511         consistency with other archs.
17512
17513         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17514
17515 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17516
17517         * debug-debugger.c: fix the build.
17518
17519 2006-05-17  Martin Baulig  <martin@ximian.com>
17520
17521         * debug-debugger.c
17522         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17523         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17524         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17525         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17526
17527 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17528
17529         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17530
17531 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17532
17533         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17534         MONO_TYPE_GENERICINST.
17535         
17536         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17537         MONO_TYPE_GENERICINST.
17538
17539 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17540
17541         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17542         #78325.
17543
17544 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17545
17546         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17547         mempool.
17548         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17549
17550 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17551
17552         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17553         mono_trace_cleanup ().
17554
17555         * iltests.il: Fix problem with the newly added test.
17556
17557         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17558         due to register constraints, free up the previous hreg. Fixes #78314.
17559
17560         * iltests.il: Add new test for #78314.  
17561
17562         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17563         Interlocked.Add. Fixes #78312.
17564
17565         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17566         
17567 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17568
17569         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17570
17571 2006-05-05  Martin Baulig  <martin@ximian.com>
17572
17573         * debug-mini.c (mono_debug_open_block): New method.
17574
17575         * mini-amd64.c
17576         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17577         the beginning of each basic block.
17578
17579         * mini-x86.c
17580         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17581         the beginning of each basic block.
17582
17583 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17584
17585         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17586         default until I understand why they break the build on amd64.
17587
17588 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17589
17590         * mini.c (mini_cleanup): Call mono_cleanup ().
17591
17592         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17593         errors.
17594
17595 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17596
17597         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17598         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17599         default since all known bugs are fixed, and I cannot reproduce bug
17600         77944... I'm asking Matt Hargett to test again after this commit.
17601
17602 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17603
17604         * mini-codegen.c: Fixed typo that thrashed inline.
17605
17606 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17607
17608         * dominators.c (compute_dominators): Avoid using a worklist since
17609         it is not correct in some cases. Instead, iterate over all bblocks as
17610         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17611
17612 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17613
17614         * mini.c (mono_jit_compile_method_inner): Use
17615         mono_prepare_exception_from_error that resets the value
17616         internally.
17617
17618 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17619
17620         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17621         
17622 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17623
17624         * aliasing.c: Fixed bug 78210.
17625
17626 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17627
17628         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17629         default until all their problems (or the ones they trigger) are fixed.
17630
17631 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17632
17633         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17634         
17635         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17636         as loaded only after resolving patches since that could invoke the same method.
17637
17638         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17639
17640         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17641         functions.
17642
17643         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17644         AOT loader.
17645
17646         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17647         stack.
17648
17649         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17650         made from AOT code through the PLT table.
17651
17652         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17653         holding the plt offset when a call is made to the aot plt trampoline.
17654         
17655 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17656
17657         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17658         amd64 AOT support.
17659
17660         * Makefile.am (common_sources): Fix build breakage.
17661
17662         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17663         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17664         intra-assembly calls if possible.
17665         
17666         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17667
17668         * mini-trampolines.c: Handle PLT entries.
17669
17670         * mini.c: Avoid creating a GOT var for calls.
17671
17672         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17673         from mscorlib code.
17674
17675         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17676         from mscorlib code.
17677
17678         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17679         AOT code.       
17680
17681         * mini.h: Bump AOT file format version.
17682         
17683         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17684         covers more cases.
17685
17686 2006-04-25  Martin Baulig  <martin@ximian.com>
17687
17688         * driver.c: Disable copyprop, consprop and inline when running
17689         inside the debugger.
17690
17691 2006-04-25  Martin Baulig  <martin@ximian.com>
17692
17693         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17694         with `get_current_thread' and added `detach'.
17695         (MonoDebuggerMetadataInfo): Added `thread_size',
17696         `thread_tid_offset', `thread_stack_ptr_offset' and
17697         `thread_end_stack_offset'.
17698
17699 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17700
17701         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17702         aot-runtime.c.
17703
17704         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17705         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17706
17707         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17708
17709         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17710
17711         * aot.c: Add support for ADJUSTED_IID.  
17712
17713 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17714
17715         * aot.c (emit_method_order): Don't align method_order_end.
17716
17717         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17718         the interface ID changes.
17719
17720 2006-04-21  Dick Porter  <dick@ximian.com>
17721
17722         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17723         cleaning up a thread.  Fixes the new part of bug 77470.
17724
17725 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17726
17727         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17728         to managed wrapper.
17729                      
17730 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17731
17732         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17733         
17734         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17735         SIGSEGV. Fixes #78072.
17736
17737         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17738         unregister our SIGABRT handler.
17739
17740 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17741
17742         * mini.c: Disabled inline where it can alter the call stack in a
17743         way visible from managed code.
17744         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17745         default.
17746
17747 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17748
17749         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17750         on other platforms. Fixes #78089.
17751
17752 2006-04-13  Martin Baulig  <martin@ximian.com>
17753
17754         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17755         determine whether we're inside the debugger.
17756
17757         * debug-debugger.h
17758         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17759
17760 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17761
17762         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17763         handler clauses. Fixes #78024.
17764
17765         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17766         in the CALL_MEMBASE opcodes. Fixes #78088.
17767         (mono_arch_get_vcall_slot_addr): Ditto.
17768
17769 2006-04-10  Martin Baulig  <martin@ximian.com>
17770
17771         * debug-debugger.c: The thread handling code has now been moved
17772         into ../metadata/threads.c.
17773
17774 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17775
17776         * driver.c (mono_main): Fix --with-gc=none build.
17777
17778         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17779         (mono_spillvar_offset_float): Ditto.
17780         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17781         hreg, not when its !global, since on ia64, there is a third category: stacked
17782         registers.      
17783
17784 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17785
17786         * mini.c: set MonoInst->klass for load field address and a few other
17787         places.
17788
17789 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17790
17791         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17792
17793 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17794
17795         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17796         the branch opt changes.
17797
17798 2006-04-06  Dick Porter  <dick@ximian.com>
17799
17800         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17801         
17802         * wapihandles.c (mini_wapi_seminfo): 
17803         * driver.c (mono_main): Add semaphore info option
17804
17805 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17806
17807         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17808         branch optimization changes. Fixes #78009.
17809
17810 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17811
17812         * mini.c: ignore accessibility of methods in managed->native wrappers.
17813
17814 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17815
17816         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17817         
17818         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17819
17820 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17821
17822         * mini.c: Modify the branch optimizations to preserve the invariant that
17823         the entries inside the in_bb and out_bb arrays are unique.
17824         (mono_unlink_bblock): Avoid creation of new arrays.
17825
17826 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17827
17828         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17829         change (#77992).
17830
17831 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17832
17833         * mini.c (optimize_branches): Remove the "optimizations" in
17834         the cbranch1/cbranch2 -> branch cases which were causing several
17835         problems in the past. Fixes #77986.
17836
17837 2006-03-31  Chris Toshok  <toshok@ximian.com>
17838
17839         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17840         default optimizations :(
17841
17842 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17843
17844         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17845         branch.
17846
17847 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17848
17849         * local-propagation.c: Added comments to structs and removed
17850         "Mono" prefixes from local tree mover types.
17851
17852 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17853
17854         * Makefile.am (arch_sources): Define this for each architecture so 
17855         libmono_la_SOURCES is defined in one place.
17856
17857 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17858
17859         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17860         from handles/.
17861
17862 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17863
17864         * driver.c: print the GC name supplied by configure.
17865
17866 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17867
17868         * local-propagation.c: Added tree mover, and moved here all the
17869         local propagation code from mini.c
17870         * mini.c: Added support for treeprop, and moved all the local
17871         propagation code to local-propagation.c
17872         * mini.h: Added support for treeprop
17873         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17874         treeprop, inline and deadce by default
17875         * Makefile.am: Added local-propagation.c
17876
17877 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17878
17879         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17880
17881 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17882
17883         * debug-debugger.c: make it compile without the Boehm GC.
17884
17885 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17886
17887         * mini.c: fixed issue with mismatch when an icall is registered
17888         with multiple names but same address.
17889
17890 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17891
17892         * declsec.c, mini-exceptions.c: use write barrier to set reference
17893         fields of managed objects.
17894
17895 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17896
17897         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17898         (can_access_internals): Fix a warning.
17899
17900         * mini.c (print_method_from_ip): Rename this to 
17901         mono_print_method_from_ip so it gets exported.
17902
17903         * trace.c: Deal with strings inside StringBuilder's containing garbage
17904         and fix memory leaks. Fixes #77848.
17905
17906 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17907
17908         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17909         fixes #77787.
17910
17911 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17912         
17913         * mini-s390.c: Remove OP_X86_TEST_NULL.
17914
17915 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17916
17917         * mini.c: use the correct GetHashCode() for the moving collector.
17918
17919 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17920
17921         * liveness.c: Regalloc spill cost tuning.
17922
17923 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17924         
17925         * mini-s390x.h: Correct S390_LONG macro.
17926
17927         * mini-s390x.c: Cleanup unused code.
17928
17929 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17930
17931         * jit-icalls.h: New file.
17932
17933         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17934         icalls and include that instead of including jit-icalls.c.
17935
17936         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17937         OP_X86 opcodes.
17938
17939 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17940
17941         * mini.c: when checking for member accessibility, also check for
17942         friend assemblies and for explicit interface implementations.
17943
17944 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17945
17946         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17947
17948         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17949
17950         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17951         common cases are done first.    
17952
17953         * mini-ops.h: Only define platform specific opcodes on the given platform.
17954
17955         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17956         branch.
17957         
17958 2006-03-14  Martin Baulig  <martin@ximian.com>
17959
17960         Revert Paolo's change from r57348:
17961
17962         * mini.h: don't use gboolean for bitfields.
17963         * mini.c: verifier changes for fields and methods accessibility.
17964
17965 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17966
17967         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17968
17969         * mini-s390x.c: Fix conv_r_un.
17970
17971         * cpu-s390, cpu-s390x.md: Fix lengths.
17972
17973 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17974
17975         * mini.c: nested types have access to all the nesting
17976         levels, not just the enclosing types.
17977
17978 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17979
17980         * mini.c: added a few more verification checks.
17981
17982 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17983
17984         * liveness.c: Merge optimizations from the linear-il branch.
17985
17986 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17987
17988         * mini-ia64.c (emit_call): Add a comment.
17989
17990         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17991
17992         * tramp-ia64.c: Fix some warnings.
17993
17994 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17995
17996         * mini.h: don't use gboolean for bitfields.
17997         * mini.c: verifier changes for fields and methods accessibility.
17998
17999 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18000
18001         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
18002         lazy icall wrapper changes.
18003
18004         * dominators.c: Replace all the dominator algorithms with faster
18005         ones from the linear-il branch.
18006
18007         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
18008         the mempool.
18009
18010         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18011         common cases are done first.
18012
18013         * mini-amd64.c: Fix some warnings.
18014
18015         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
18016         from the mempool.
18017
18018         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
18019         added code.
18020
18021         * mini.h: Add a missing prototype.
18022
18023 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
18024
18025         * mini.c: Compile icall wrappers lazily.
18026
18027         * mini-codegen.c: Use printf instead of g_print since its much faster.
18028
18029         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18030         function.
18031
18032         * mini.c (optimize_branches): Cache the negative result from 
18033         remove_block_if_useless ().
18034
18035         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18036         Also fix some bblock linking issues.
18037
18038         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18039         assembly files.
18040
18041         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18042
18043         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18044         accessed fields first, for better cache behavior.
18045         
18046 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18047
18048         * mini.c: speedup IList<T> array accesses.
18049
18050 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18051
18052         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18053         inline_costs counter. Fixes #77190.
18054
18055 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18056
18057         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18058         trace messages. Fixes #77706.
18059
18060 2006-03-04  Martin Baulig  <martin@ximian.com>
18061
18062         * tramp-amd64.c, tramp-x86.c
18063         (mono_debugger_create_notification_function): Use
18064         mono_global_codeman_reserve() to allocate a buffer at runtime and
18065         return it.
18066
18067         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18068
18069         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18070         notification function at runtime and then call `initialize' in the
18071         `MONO_DEBUGGER__debugger_info' vtable.
18072
18073 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18074
18075         * iltests.il: Fix a visibility problem.
18076
18077 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18078
18079         * driver.c, mini.c: add hooks for the counters API.
18080
18081 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18082
18083         * driver.c: show disabled options.
18084
18085 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18086
18087         * linear-scan.c: always use cost-driven selection.
18088
18089 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18090
18091         * jit-icalls.c (helper_compile_generic_method): Revert change from
18092         2006-02-24.
18093
18094 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18095
18096         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18097
18098 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18099
18100         * inssel.brg: style fixes, mostly to force the updated monoburg
18101         to run for people using svn.
18102
18103 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18104
18105         * mini.c: match monoburg changes.
18106
18107 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18108
18109         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18110         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18111         declaration in the header file.
18112
18113 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18114
18115         * helpers.c: reduce relocations and mem usage.
18116
18117 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18118
18119         * mini.h, mini-codegen.c: disable logging features if
18120         requested by configure.
18121
18122 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18123
18124         * mini.c: tiny verifier changes.
18125
18126 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18127
18128         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18129         cpu-pentium.md: stack alignment changes for osx/x86,
18130         partially from Geoff Norton <gnorton@customerdna.com>.
18131
18132 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18133
18134         * jit-icalls.c (helper_compile_generic_method): Update to changes
18135         in metadata/class.c.
18136
18137 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18138         
18139         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18140         
18141         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18142         interface calls with large offsets.
18143
18144 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18145
18146         * jit-icalls.c (helper_compile_generic_method): Document the
18147         special-case we depend on so that we can inflate the method twice
18148         with the same context with no bad side-effects.
18149
18150 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18151
18152         * mini-x86.c, mini-amd64.c: fix for case when xen support
18153         is disabled.
18154
18155 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18156
18157         * mini-x86.c, mini-amd64.c: generate code to access tls items
18158         in a faster way for Xen systems.
18159
18160 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18161
18162         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18163         updates and compilation fixes for the OSX/x86 port, mostly from
18164         Geoff Norton <gnorton@customerdna.com>.
18165
18166 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18167
18168         * inssel.brg: faster interface call implementation
18169         to sync with the interface_offsets MonoVTable changes.
18170
18171 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18172
18173         * mini.c: more verification checks.
18174
18175 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18176
18177         * mini.c: added a few more verification checks.
18178
18179 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18180
18181         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18182         facility on the processor and use it if available.
18183
18184 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18185
18186         * driver.c, aot.c, mini.c: throw exception if the IL code is
18187         invalid or unverifiable.
18188
18189 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18190
18191         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18192         m.StructField.
18193
18194 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18195
18196         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18197
18198 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18199
18200         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18201         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18202         handling of instantiated generic valuetypes.
18203
18204 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18205
18206         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18207         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18208         instead.
18209
18210         * generics.2.cs: Revert the nullable reftypes tests.
18211
18212 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18213
18214         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18215         using __builtin_frame_address (1) as it doesn't work in the presence
18216         of optimizations. Hopefully fixes #77273.
18217
18218         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18219         -> generics.cs change as it doesn't work with some automake versions.
18220
18221 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18222
18223         * mini.c: handle systems that sue a different way to
18224         retrieve the stack address of the current thread.
18225
18226 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18227
18228         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18229         it specially in the makefile.
18230
18231         * generics.2.cs: Add tests for nullable reference types.
18232
18233 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18234
18235         * mini.c: always handle the case when mono_jit_init()
18236         is called in a thread different from the main thread,
18237         confusing libgc (bug #77309).
18238
18239 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18240
18241         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18242
18243 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18244
18245         * mini.c: change optimize_branches () to use a single loop
18246         and introduce a new optimization to simplify some range checks.
18247
18248 2006-02-03  Martin Baulig  <martin@ximian.com>
18249
18250         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18251         and merged with debugger_thread_manager_add_thread().
18252         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18253         inform the debugger about the main thread.
18254
18255 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18256
18257         * basic.cs: Add test for div.un/rem.un constant folding.
18258
18259 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18260
18261         * cpu-s390x.md: correct int_xor_imm length
18262
18263 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18264
18265         * generics.2.cs: New test for #77442.
18266
18267         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18268         #77442.
18269
18270 2006-02-02  Martin Baulig  <martin@ximian.com>
18271
18272         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18273         <mono/metadata/mono-debug-debugger.h>   
18274
18275         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18276
18277 2006-02-02  Martin Baulig  <martin@ximian.com>
18278
18279         * debug-debugger.h: New header file for debug-debugger.c.
18280
18281         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18282         function is a separate thread anymore; add support for attaching.
18283
18284 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18285
18286         * tramp-x86.c: Fix a warning.
18287
18288 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18289
18290         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18291         on very large methods.
18292
18293         * aot.c (load_patch_info): Fix a warning.
18294
18295 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18296
18297         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18298         mini-ops.h: alu membase optimizations.
18299
18300 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18301
18302         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18303         to speedup StringBuilder.
18304
18305 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18306
18307         * dominators.c (mono_compute_natural_loops): Fix detection of
18308         loop body start blocks.
18309
18310         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18311
18312 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18313
18314         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18315         #75145.
18316
18317 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18318
18319         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18320
18321 2006-01-25  Martin Baulig  <martin@ximian.com>
18322
18323         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18324         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18325         started to cleanup this file a little bit.
18326
18327 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18328
18329         * mini.c: optimize a codepath frequently happening in generics code.
18330
18331 2006-01-23  Martin Baulig  <martin@ximian.com>
18332
18333         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18334
18335         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18336         functions directly.
18337
18338         * driver.c: debug-debugger.c is only available if
18339         `MONO_DEBUGGER_SUPPORTED' is defined.   
18340
18341 2006-01-23  Martin Baulig  <martin@ximian.com>
18342
18343         * debug-debugger.c: Only enable this on platforms where the Mono
18344         Debugger is working (x86 and x86_64).
18345
18346 2006-01-21  Martin Baulig  <martin@ximian.com>
18347
18348         The Mono Debugger is now using the normal `mono' instead of the
18349         `mono-debugger-mini-wrapper' when executing managed code.
18350
18351         * debug-debugger.c: New file; previously known as
18352         debugger/wrapper/wrapper.c.
18353
18354         * debug-mini.c (mono_init_debugger): Removed.
18355
18356         * driver.c (mono_main): Added new `--inside-mdb' command line
18357         argument which is used when running inside the debugger.
18358
18359 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18360
18361         * liveness.c (mono_analyze_liveness): Remove some unused data
18362         structures.
18363
18364 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18365
18366         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18367
18368 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18369
18370         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18371         depends on implementation details of monobitset.
18372
18373         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18374         Fixes #77271.
18375
18376 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18377
18378         * liveness.c: Update after monobitset changes.
18379
18380 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18381
18382         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18383
18384 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18385
18386         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18387
18388         * mini-s390x.c: Remove warning messages.
18389
18390 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18391
18392         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18393
18394 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18395
18396         * generics.2.cs: Add ldelem/stelem_any test.
18397
18398 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18399
18400         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18401
18402 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18403
18404         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18405         
18406 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18407
18408         * generics.2.cs: Reenable vtype tests.
18409
18410         * inssel-x86.brg: Remove an icorrect valuetype rule.
18411
18412 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18413
18414         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18415         initial support for OP_ABS.
18416
18417 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18418
18419         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18420
18421 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18422
18423         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18424         conversion and implement LADD/LSUB.
18425
18426         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18427         architectures.
18428
18429 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18430
18431         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18432
18433         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18434         architectures.
18435
18436 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18437
18438         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18439         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18440         (stack walk problem).
18441
18442 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18443
18444         * aot.c (mono_aot_load_method): Fix a warning.
18445
18446 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18447
18448         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18449
18450 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18451
18452         * iltests.il: Add test for #77148.
18453
18454         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18455         #77148.
18456
18457 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18458
18459         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18460
18461 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18462
18463         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18464         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18465
18466         * basic-long.cs: Add lconv-to-r4/r8 tests.
18467
18468 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18469
18470         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18471
18472         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18473         here as on other archs.
18474
18475 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18476
18477         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18478
18479 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18480
18481         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18482         
18483         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18484
18485         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18486         instrument_prolog; Add memory_barrier instruction.
18487
18488 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18489
18490         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18491
18492 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18493
18494         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18495
18496         * aliasing.c inssel.brg: Fix warnings.
18497
18498         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18499         could skip initialization of some parts of memory.
18500
18501         * mini.c mini-ia64.c: Fix warnings.
18502
18503         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18504
18505 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18506
18507         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18508         a crash seen on sparc.
18509
18510         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18511         
18512         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18513
18514 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18515
18516         * mini-ops.h: Add s390_backchain instruction
18517
18518         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18519
18520         * cpu-s390.md: Add s390_backchain instruction
18521
18522         * mini-s390.c: Significant ABI changes
18523
18524         * mini-s390.h: Cater for zero length structures
18525
18526 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18527
18528         * mini-s390.c: ABI fixes
18529
18530         * inssel-s390.brg: Remove debug statements
18531
18532         * cpu-s390.md: Fix length of ATOMIC_xx operations
18533
18534 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18535
18536         * basic-float.cs: Add float<->long conversion tests.
18537
18538 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18539
18540         * mini-s390.c: Fix LOCALLOC processing.
18541
18542         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18543
18544 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18545
18546         * iltests.il: Add tests for some opcodes not covered by the other
18547         tests.
18548
18549 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18550
18551         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18552         register loading for Tail processing; Correct trace output.
18553
18554         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18555
18556         * cpu-s390.md: Correct size of jmp instruction. 
18557
18558 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18559
18560         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18561
18562 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18563
18564         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18565           Bring s390 up to current level.
18566
18567 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18568
18569         * generics.2.cs: Disable the newly added tests as they do not work yet.
18570         
18571         * generics.2.cs: Add valuetype tests.
18572
18573 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18574
18575         * basic-long.cs: Add i4->u8 test.
18576
18577         * objects.cs: Add tests for JIT intrinsic.
18578
18579         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18580         optimizations lost by a mistake.
18581
18582 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18583
18584         * basic-long.cs: Remove a test moved to objects.cs.
18585
18586         * arrays.cs: Add more array tests.
18587
18588 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18589
18590         * arrays.cs: Add new tests for multi-dimensional arrays.
18591
18592 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18593
18594         * Makefile.am (test_sources2): Add generics.2.cs.
18595         (EXTRA_DIST): Add test_sources2.
18596
18597 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18598
18599         Support for boxing and unboxing nullable types as well as the
18600         isinst operation on nullables, per the CLI ammendment.
18601
18602         * inssel.brg (CEE_ISINST): Special case for nullable
18603
18604         * mini.c (handle_unbox_nullable): new method
18605         (handle_box): Special case for nullable types
18606         (mono_method_to_ir): Call handle_unbox_nullable in correct
18607         places.
18608
18609         * generics.2.cs: New test suite
18610
18611         * Makefile.am: Support for regression tests with generics.
18612
18613 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18614
18615         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18616         allocated to registers. Fixes #76800.
18617
18618 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18619
18620         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18621
18622 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18623
18624         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18625         of platforms.
18626
18627 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18628
18629         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18630         objects.cs.
18631
18632         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18633         
18634         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18635 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18636
18637         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18638         single precision before storing to a single precision location.
18639
18640 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18641
18642         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18643
18644 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18645
18646         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18647         correct files.
18648
18649         * basic.cs: Remove test_0_byte_compares test which was moved to
18650         objects.cs a long time ago.
18651
18652 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18653
18654         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18655
18656 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18657
18658         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18659         handlers are called.
18660
18661         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18662         throwing code.
18663
18664          * mini-ia64.c: Add support for the throw->branch exception 
18665         optimization.   
18666
18667         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18668
18669 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18670
18671         * mini.c: Enabled "fastpath" deadce :-)
18672         
18673 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18674
18675         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18676         alias analysis pass to support it.
18677         * mini.h: Likewise.
18678         * ssa.c: Likewise.
18679         * liveness.c: Likewise (liveness computation can use aliasing
18680         information to be more accurate).
18681         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18682         moreover made so that "--compile-all" uses the given optimization
18683         flags and not the default ones.
18684         * aliasing.c: Alias analysis (new file).
18685         * aliasing.h: Likewise.
18686         * Makefile.am: added "aliasing.c" and "aliasing.h".
18687         
18688 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18689
18690         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18691         OP_L opcodes.
18692
18693 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18694
18695         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18696         fp >= end_of_stack exit condition, as it is not needed, and it might
18697         become true for fp eliminated frames.
18698
18699 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18700
18701         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18702         coded offsets.
18703
18704 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18705
18706         * mini-arm.c: fixed alignment of doubles/longs to match
18707         the C ABI (bug #76635).
18708
18709 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18710
18711         * aot.c: fix compilation with --enable-minimal=aot.
18712
18713 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18714
18715         * mini-arm.c: fixed compatibility with the new
18716         floating point emulator package for compares.
18717
18718 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18719
18720         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18721
18722 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18723
18724         * mini-exceptions.c (print_stack_frame): Output to stderr.
18725         (mono_handle_native_sigsegv): Ditto.
18726
18727 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18728
18729         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18730         OP_LCONV_TO_OVF_I implementation.
18731
18732         * mini-amd64.c: Add support for the throw->branch exception 
18733         optimization.
18734
18735         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18736         when the catch clause catches a more general exception, i.e. Object.
18737
18738 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18739
18740         * cpu-ia64.md: Remove unused opcodes.
18741
18742         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18743         specific defines for architectures defining USE_SIGACTION.
18744
18745         * mini-ia64.c: Fix some warnings.
18746
18747         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18748         version seemed to skip a frame.
18749
18750 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18751
18752         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18753         only calls which are made to native code use this flag.
18754
18755 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18756
18757         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18758         varargs methods as well.
18759         
18760         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18761         which have save_lmf set. Reorganize methods prologs a bit.
18762
18763         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18764         debugger to the proper place.
18765
18766 2005-10-29  Martin Baulig  <martin@ximian.com>
18767
18768         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18769         when running inside the debugger until the debugger has support
18770         for it.
18771
18772 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18773
18774         * mini.h: Fix a warning.
18775
18776 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18777
18778         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18779         we expose publicly, this returns the string.
18780
18781 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18782
18783         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18784         with fp elimination.
18785
18786 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18787
18788         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18789         native stacktrace using the glibc 'backtrace' function if available.
18790
18791 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18792
18793         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18794
18795         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18796         handle SIGSEGVs received while in native code.
18797
18798         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18799         code, call mono_handle_native_sigsegv which will abort the runtime
18800         after printing some diagnostics, instead of converting it into a
18801         confusing NullReferenceException.
18802
18803 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18804
18805         * cpu-pentium.md: Remove unused opcodes.
18806
18807 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18808
18809         * mini-amd64.h (MonoLMF): Add rsp field.
18810
18811         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18812         the lmf too.
18813
18814 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18815
18816         * mini-codegen.c (get_register_spilling): Fix some warnings.
18817
18818 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18821         elimination during exception handling. Enable fp elimination by
18822         default.
18823
18824         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18825         elimination.
18826
18827 2005-10-16  Martin Baulig  <martin@ximian.com>
18828
18829         * mini-exceptions.c
18830         (mono_debugger_run_finally): New public method for the debugger.
18831
18832 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18833
18834         * debug-mini.c (mono_debug_init_method): Fix warning.
18835
18836         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18837         the 'exname' parameter const to fix some warnings.
18838
18839 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18840
18841         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18842         introduced by the previous patch.
18843
18844 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18845
18846         * basic-float.cs: Add test for precision of float arithmetic.
18847
18848         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18849         when loading/storing single values from/to memory.
18850
18851         * mini.c (mono_jit_compile_method_with_opt): Create the function
18852         pointers in the correct domain.
18853
18854 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18855
18856         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18857         introduced by previous patch.
18858         
18859         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18860         when out_filter_idx is NULL.
18861
18862         * mini-exceptions.c: Don't run filter clauses twice during exception
18863         handling. Fixes #75755.
18864
18865 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18866
18867         * aot.c: Add support for ldflda wrappers.
18868
18869         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18870         #75902.
18871
18872 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18873
18874         * mini.c, mini.h: do not consider exception handlers blocks when
18875         setting up interface variables.
18876
18877 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18878
18879         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18880
18881 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18882
18883         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18884         causes a regression.
18885
18886         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18887
18888 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18889
18890         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18891         of the OP_P definitions.
18892
18893         * TODO: Add a proposal for dealing with the CEE/OP mess.
18894
18895         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18896         optimizations from the x86 port.
18897
18898         * cpu-amd64.md: Ditto.
18899
18900         * basic.cs basic-long.cs: Add tests.
18901
18902 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18903
18904         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18905         Patrik Torstensson's implementation of my exception-handling
18906         optimization idea, when the exception object is not used
18907         (bug #62150).
18908
18909 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18910
18911         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18912         of the mul_imm optimizations from the old jit.
18913
18914 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18915
18916         * mini.c, liveness.c: patch by Patrik Torstensson and
18917         Zoltan Varga to improve performance in methods with
18918         exception clauses.
18919
18920 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18921
18922         * driver.c: Remove 'Globalization' entry from --version.
18923
18924 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18925
18926         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18927         there is a profiler interested in JIT events.
18928
18929         * aot.c: Load profile files produced by the AOT profiling module, and
18930         reorder methods based on the profiling info. Add a 'method_order' table
18931         to the AOT file to make mono_aot_find_jit_info work with the reordered
18932         methods.
18933
18934         * mini.h: Bump AOT file version info.
18935
18936 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18937
18938         * mini-arm.h: work around what looks like a gcc bug when optimizations
18939         are enabled.
18940
18941 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18942
18943         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18944         conditionals.  Use ...
18945         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18946
18947 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18948
18949         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18950         to determine the amount of memory to copy when passing valuetypes.
18951
18952         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18953         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18954
18955 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18956
18957         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18958         information about aot.
18959
18960 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18961
18962         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18963         macros. This will allow a deadlock debugger to easily be plugged
18964         in.
18965
18966 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18967
18968         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18969
18970 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18971
18972         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18973         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18974         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18975         ($(arch_built)) [CROSS_COMPILING]: Error out.
18976
18977 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18978
18979         * aot.c: Add support for the no_special_static flag for classes.
18980
18981 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18982
18983         * Reapply reverted patches.
18984
18985         * *: Revert r50174 as well.
18986
18987         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18988
18989 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18990
18991         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18992
18993 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18994
18995         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18996         part of the SIG_HANDLER_SIGNATURE.  
18997
18998 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18999
19000         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
19001         statistics.
19002
19003         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
19004         introduced by previous patch.
19005
19006 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
19007
19008         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
19009         saved registers too.
19010
19011         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
19012         upon the information returned by get_call_info ().
19013         
19014         * mini-x86.c (add_float): Fix stack size calculation.
19015         (mono_arch_call_opcode): Rewrite this so it works based up the
19016         information returned by get_call_info ().
19017         (mono_arch_get_this_vret_args): Ditto.
19018
19019 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
19022         in cinfo to determine the registers which need to be used.
19023
19024 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19025
19026         * driver.c (mono_main): Add --server and --desktop flags. 
19027
19028 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19029
19030         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19031         registers as global registers.
19032
19033         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19034         longer needed with the new register allocator.
19035
19036         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19037
19038         * cpu-ia64.md: Remove unused opcodes.
19039         
19040         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19041         
19042 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19043
19044         * cpu-amd64.md: Remove unused opcodes.
19045
19046         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19047         needed with the new register allocator.
19048
19049         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19050         reg-reg moves.
19051
19052 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19053
19054         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19055
19056 2005-09-16  Martin Baulig  <martin@ximian.com>
19057
19058         * exceptions-amd64.c
19059         (throw_exception): Don't call mono_debugger_throw_exception() if
19060         we're a rethrow - see the FIXME in the code.
19061
19062 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19063
19064         * mini.c (mono_init_exceptions): This only works on some architectures.
19065         
19066 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19067
19068         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19069         on ia64.
19070
19071         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19072
19073         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19074         now in mini-exceptions.c.
19075
19076 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19077
19078         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19079         now in mini-exceptions.c.
19080
19081 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19082
19083         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19084         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19085
19086         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19087         code into mini-exceptions.c. Add some assertions to it.
19088
19089 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19090
19091         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19092         (<software@solmersa.com>). Fix as errors on windows.
19093
19094 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19095
19096         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19097         method info into the LMF.
19098
19099 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19100         
19101         * mini-ia64.c: Add proper unwind info for method epilogs.
19102
19103         * exceptions-ia64.c: Add some code to help debugging.
19104         
19105         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19106
19107         * mini-exceptions.c: Fix warning.
19108
19109 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19110
19111         * mini.c: Really fix build.
19112
19113         * mini-x86.c mini-amd64.c: Fix build.
19114
19115 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19116
19117         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19118
19119         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19120         some Interlocked methods as intrinsics.
19121
19122         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19123         for Thread methods as well.
19124
19125         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19126
19127         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19128
19129         * mini-ia64.c mini-x86.c mini-amd64.c 
19130         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19131         OP_MEMORY_BARRIER.
19132         
19133         * mini.c (mono_init_exceptions): Fix build breakage.
19134
19135 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19136
19137         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19138         of instructions. Use the new ia64_unw_op macros for emitting unwind
19139         info.
19140
19141         * mini.c (mono_init_exceptions): Initialize exception handling
19142         related trampolines at startup.
19143
19144 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19145
19146         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19147
19148 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19149
19150         * mini.c: Handle type loading errors gracefully during compilation and
19151         throw the appropriate exception.
19152
19153 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19154
19155         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19156         for the mono binary.
19157
19158 2005-09-09  Martin Baulig  <martin@ximian.com>
19159
19160         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19161         the release.
19162
19163 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19164
19165         * mini-arm.h: use emulation for conv.r.un for the release.
19166
19167 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19168
19169         * mini-arm.c, objects.cs: more fixes and tests for them.
19170
19171 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19172
19173         * mini-arm.c: align structures to at least 4 bytes to be able
19174         to keep our current optimized memcpy.
19175
19176 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19177
19178         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19179
19180 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19181
19182         * mini.c: ignore SIGPIPE.
19183
19184 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19185
19186         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19187
19188         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19189
19190 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19191
19192         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19193
19194 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19195
19196         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19197         exception handling support.
19198         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19199         patch by Brian Koropoff <briank@marakicorp.com>).
19200
19201 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19202
19203         * mini.c: revert another 'optimization' which breaks when
19204         items on the eval stack need to be saved at a basic block end
19205         (bug #75940).
19206
19207 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19208
19209         * jit-icalls.c: for arrays, ensure we always provide
19210         lower bounds.
19211
19212 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19213
19214         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19215         
19216         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19217
19218 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19219
19220         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19221         arguments in their original register.
19222
19223 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19224
19225         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19226         memset/memcpy.
19227
19228         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19229         when ssapre is enabled.
19230
19231         * inssel-long.brg: Fix bug in previous patch.
19232
19233         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19234         multiplication by a constant.
19235
19236 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19237
19238         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19239         icc.
19240
19241         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19242         saving registers.
19243
19244 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19245
19246         * inssel-arm.brg: apply changes tested by Brian Koropoff
19247         <briank@marakicorp.com>.
19248
19249 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19250
19251         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19252         
19253 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19254
19255         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19256         to the same register if dreg is just a base register.
19257         (print_ins): Improve printing of membase opcodes.
19258
19259         * inssel-x86.brg: Add optimized ldind(reg) rules.
19260
19261         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19262
19263 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19264
19265         * mini.c: when running under valgrind, set the stack bottom for
19266         the GC at the actual approximate stack for the app (fixes running
19267         mono with valgrind).
19268
19269 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19270
19271         * mini.c: do no break at the first valuetype to init found
19272         (fixes bug #75791).
19273
19274 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19275
19276         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19277
19278 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19279
19280         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19281
19282 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19283
19284         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19285
19286 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19287
19288         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19289
19290         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19291         code.
19292
19293         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19294         code.
19295
19296         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19297         methods.
19298
19299 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19300
19301         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19302
19303 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19304
19305         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19306         in the tail recursion optimization.
19307
19308         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19309         debug info into the assembly file.
19310
19311         * iltests.il: Add test for filter regions.
19312
19313         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19314         initial stack of filter regions. Fixes #75755.
19315
19316 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19317
19318         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19319         stack requirements.
19320
19321 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19322
19323         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19324         the check for an already compiled method on non-ia64 platforms.
19325         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19326         proper domain.
19327
19328         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19329
19330         * inssel-x86.brg: Add some optimized call rules.
19331
19332 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19333
19334         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19335         method here.
19336
19337         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19338         mono_arch_patch_delegate_trampoline.
19339
19340         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19341
19342         * mini-trampolines.c: Fix build.
19343
19344         * mini-amd64.h: Add delegate trampolines.
19345
19346         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19347
19348         * inssel-amd64.brg: Add optimized call rules.
19349         
19350         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19351
19352         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19353
19354 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19357         change.
19358
19359         * mini-ia64.c: Remove LMF fixmes.
19360
19361         * mini-ia64.h: Remove most fields from LMF.
19362
19363         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19364
19365         * mini-trampolines.c: Add support for IA64 function descriptors.
19366
19367         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19368         for IA64 function descriptors.
19369
19370 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19371
19372         * tramp-arm.c: patch the vtable for virtual calls. Added
19373         support code to register/unregister the LMF.
19374         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19375         more LMF work.
19376
19377 2005-08-19  Dick Porter  <dick@ximian.com>
19378
19379         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19380         bit value if needed.
19381
19382 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19383
19384         * mini.c (mini_get_method): Move handling of wrapper data here.
19385
19386         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19387
19388         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19389         virtual.
19390
19391         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19392         bblock->code does not remain empty.
19393
19394 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19395
19396         * arrays.cs: Add regression test for #75832.
19397
19398         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19399         rules. Fixes #75832.
19400
19401         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19402         instruction scheduling.
19403
19404 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19407
19408 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19409
19410         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19411
19412         * mini-codegen.c: Fix VC build.
19413
19414         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19415
19416 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19417
19418         * mini.h: fix signature for mono_register_opcode_emulation.
19419
19420 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19421
19422         * mini.c: Get rid of most of the helper_sig_... constants using
19423         mono_create_icall_signature ().
19424
19425 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * jit-icalls.c (helper_ldstr): New helper function.
19428
19429         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19430
19431         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19432         throw, load the string using a helper call instead of creating a string object.
19433
19434         * aot.c: Update after LDSTR changes.
19435
19436         * mini.h: Bump AOT file version.
19437         
19438         * aot.c: Save class size info into the AOT file. Print more statistics during
19439         compilation.
19440
19441         * mini.h: Bump AOT file version.
19442
19443         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19444         ordering of disasm cases. Fixes #74957.
19445
19446 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19447
19448         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19449         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19450         the generic code needed for the ARM port.
19451
19452 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19453
19454         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19455         inssel-arm.brg: more ARM features and fixes.
19456
19457 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19458
19459         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19460         ARM port work in progress.
19461
19462 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19463
19464         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19465
19466         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19467
19468         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19469
19470         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19471
19472         * *-ia64.*: Ongoing IA64 work.
19473         
19474         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19475
19476 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19477
19478         * TODO: Remove out-of-data todo stuff.
19479
19480         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19481         dead code.
19482
19483         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19484
19485         * mini.h: Bump corlib version.
19486
19487 2005-07-27  Martin Baulig  <martin@ximian.com>
19488
19489         * mini-codegen.c
19490         (create_copy_ins): Added `const unsigned char *ip' argument; set
19491         `copy->cil_code' from it.
19492
19493 2005-07-27  Martin Baulig  <martin@ximian.com>
19494
19495         * mini-exceptions.c (mono_handle_exception): Don't call
19496         mono_debugger_handle_exception() for filters.
19497
19498 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19499
19500         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19501         as well.
19502
19503 2005-07-26  Martin Baulig  <martin@ximian.com>
19504
19505         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19506
19507         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19508         helper_compile_generic_method() if the method is actually virtual
19509         and non-final.
19510
19511 2005-07-26  Martin Baulig  <martin@ximian.com>
19512
19513         * mini.c
19514         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19515         public; this is now accessed directly by the debugger.
19516         (mono_generic_trampoline_code): Removed.
19517
19518         * debug-mini.c
19519         (mono_debug_init_method): Also add interncalls and wrappers.
19520
19521 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19522
19523         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19524
19525 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19526
19527         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19528
19529 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19530
19531         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19532
19533 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19534
19535         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19536         getting TLS offsets on AMD64 too.
19537
19538 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19539
19540         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19541
19542 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19543
19544         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19545         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19546
19547 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19548
19549         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19550
19551         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19552         to mini.c.
19553
19554         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19555         mono_sparc_is_virtual_call ().
19556         
19557         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19558
19559         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19560         trampoline parameters.
19561
19562         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19563         
19564         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19565         to mono_arch_get_vcall_slot_addr.
19566
19567         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19568         trampoline code.
19569
19570         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19571
19572 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19573
19574         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19575
19576 2005-07-19  Martin Baulig  <martin@ximian.com>
19577
19578         * exceptions-amd64.c (throw_exception): Call
19579         mono_debugger_throw_exception() here like we're doing it on i386.
19580
19581 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19582
19583         * mini-ia64.c: Add optimized TLS access support.
19584
19585 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19586
19587         * mini-exceptions.c: Ongoing IA64 work.
19588
19589         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19590
19591         * mini.c: Use the default optimization set when embedding. Fixes
19592         #75194.
19593
19594 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19595
19596         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19597         of trampolines to a separate file.
19598
19599         * mini-trampolines.c: New file.
19600
19601         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19602         separate file.
19603         
19604         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19605         amd64/ia64 code.
19606
19607         * mini-codegen.c: Fix cygwin build.
19608
19609 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * mini.c: Add some minor changes needed by the IA64 port.
19612
19613         * *-ia64.*: Ongoing IA64 work.
19614
19615 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19616
19617         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19618         trampolines into arch-independent and arch-dependent parts.
19619
19620         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19621
19622 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19625
19626         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19627         the xp-regalloc-branch for amd64.
19628
19629         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19630         xp-regalloc-branch for x86.
19631
19632 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19633
19634         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19635
19636 2005-07-06  Martin Baulig  <martin@ximian.com>
19637
19638         * mini.c
19639         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19640         (mono_jit_runtime_invoke): Likewise.
19641
19642 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19643
19644         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19645         on x86 too.
19646         
19647         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19648         without loading their metadata. Reorganize the file format so exception handling+
19649         debug info is kept separate from normal method info. Create MonoJitInfo 
19650         structures for methods lazily.
19651
19652         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19653         loading metadata.
19654         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19655
19656         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19657
19658         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19659         in AOT code.
19660
19661         * mini.h: Bump AOT file version.
19662
19663 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19664
19665         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19666
19667 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19668
19669         * Makefile.am (check-local): Call semdel-wrapper.
19670
19671 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19672
19673         * mini-x86.c: Revert the last change as it seems to break the build..
19674
19675 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19678         
19679         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19680
19681 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19682
19683         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19684         outside of the macro, so strange stuff doesn't happen with gcc4
19685         (NEW_AOTCONST_TOKEN): Likewise.
19686
19687 2005-06-28  Martin Baulig  <martin@ximian.com>
19688
19689         * mini.c (mini_class_is_system_array): New static method; use this
19690         instead of `klass->parent == mono_defaults.array_class' everywhere
19691         since this also works for the new generic array class.
19692
19693 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19694
19695         * inssel.brg: Remove warnings.
19696
19697 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19698
19699         * mini-ia64.c: Ongoing IA64 work.
19700
19701         * basic-float.cs: Add float->i1 conversion test.
19702
19703         * iltests.il: Add conv.u4 test.
19704
19705 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * inssel-long.brg: Fix bug caused by last change.
19708
19709 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19710
19711         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19712         BSDs.  Allows the x86 JIT to work on OSX86
19713
19714 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19715
19716         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19717         u4->i8 conversion.
19718
19719         * mini-ia64.c: Ongoing IA64 work.
19720
19721 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19722
19723         * mini-ia64.c: Ongoing IA64 work.
19724
19725         * driver.c: Clean up jit_code_hash as well when using --regression.
19726
19727         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19728
19729         * basic-long.cs: Add tests for long->u4 conversion.
19730
19731 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19732
19733         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19734         that we do not depend on undefined C behavior: the order stuff
19735         gets evaluated within an expression. Fixes mono when compiled on
19736         GCC 4.
19737
19738 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * *-ia64.*: Ongoing IA64 work.
19741
19742         * aot.c: Lower memory usage while loading AOT methods.
19743
19744         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19745
19746         * mini.h: Bump AOT file format version.
19747
19748 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19749
19750         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19751
19752 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19753
19754         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19755         not on callee assembly). Fixed some comments.
19756
19757 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19760         it gets proper disassembly.
19761         (emit_method_info): Remove some dead code.
19762
19763         * mini.c (mini_method_compile): Allways allocate the GOT var in
19764         mono_method_to_ir for emulating opcodes.
19765
19766 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19767
19768         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19769         before freeing the code memory. Fixes #74990.
19770
19771         * objects.cs: Add regression test for #74992.
19772
19773         * liveness.c: Extend live ranges of arguments to the beginning of the
19774         method. Fixes #74992.
19775
19776         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19777         so it points into the faulting instruction.
19778
19779 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19780
19781         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19782
19783         * *-ia64.*: Ongoing IA64 work.
19784
19785         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19786
19787 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19788
19789         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19790
19791         * *-ia64.*: Ongoing IA64 work.
19792
19793 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * basic-long.cs: Add tests for add/sub.ovf.
19796
19797         * basic.cs: Add tests for sub.ovf.
19798
19799         * *-ia64.*: Ongoing IA64 work.
19800
19801 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19802
19803         * *-ia64.*: Ongoing IA64 work.
19804
19805         * basic.cs: Add conv.ovf.i4.un test.
19806
19807 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19808
19809         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19810         
19811 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19812
19813         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19814
19815 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19816
19817         * *-ia64.*: Ongoing IA64 work.
19818
19819 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19820
19821         * trace.[ch]:
19822         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19823
19824 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19825
19826         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19827
19828 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19829
19830         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19831
19832         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19833         of a call is callable by a near call.
19834
19835 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19836
19837         * mini-ia64.c: Ongoing IA64 work.
19838
19839 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19840
19841         * genmdesc.c: Make the generated array non-static.
19842
19843         * inssel-long.brg: Fix LSHR_IMM rule.
19844
19845         * *-ia64.*: Ongoing IA64 work.
19846
19847         * *-ia64.*: Ongoing IA64 work.
19848
19849 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19850
19851         * *-ia64.*: Ongoing IA64 work.
19852
19853         * *-ia64.*: Ongoing IA64 work.
19854         
19855         * mini-ia64.c: Ongoing IA64 work.
19856
19857         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19858
19859 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19860
19861         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19862         
19863         * objects.cs basic-long.cs: Move some tests to objects.cs.
19864
19865 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * *-ia64.*: Ongoing IA64 work.
19868
19869         * iltests.il: Add a new test.
19870
19871         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19872         newobj. Fixes #75042.
19873
19874 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19875
19876         * *-ia64.*: Ongoing IA64 work.
19877         
19878         * *-ia64.*: Ongoing IA64 work.
19879         
19880         * *-ia64.*: Ongoing IA64 work.
19881
19882         * basic.cs objects.cs: Move tests accessing static variables as well.
19883
19884         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19885
19886 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19887
19888         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19889
19890         * driver.c: Always print failed tests.
19891
19892         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19893         frame pointer.
19894
19895         * *ia64*: Ongoing IA64 work.
19896
19897 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * basic.cs: Add tests for add.ovf. Fix warnings.
19900
19901 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19902
19903         * driver.c (mono_main): Avoid crash if no argument is passed to
19904         --break;  Do not use g_error, but f_printf.   And fix all other
19905         ocurrences of the same crash.
19906
19907 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19908
19909         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19910         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19911         Fixes #74742.
19912
19913 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * *-ia64.*: Add beginnings of IA64 backend.
19916
19917         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19918
19919 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19920
19921         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19922         Fixes #74925.
19923
19924         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19925
19926         * mini-amd64.c: Fix a warning.
19927
19928 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19929
19930         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19931         in float_neg. Fixes #74897.
19932
19933         * mini-amd64.c (emit_call): Fix another near call bug.
19934
19935 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19936
19937         * declsec.c: Keep the appdomain information in the structure. Added a 
19938         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19939         value gets overwritten).
19940         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19941         an MonoAppDomain member to MonoSecurityFrame.
19942         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19943         used in the stack walk. Now use a MonoArray which grow (double) when
19944         it gets full.
19945
19946 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19947
19948         * mini.c: Re-enabled runtime cleanup, since running threads should
19949         now properly stop when exiting.
19950
19951 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19952
19953         * mini-codegen.c: New file contaning the arch-independent local
19954         register allocator. Not used by any architectures yet.
19955
19956         * mini.h linear-scan.c: Merge some changes from the 
19957         mini-xp-local-regalloc branch.
19958
19959 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * mini-amd64.c (emit_call): Fix calls to native functions when the
19962         runtime is compiled as a shared library. Fixes #74756.
19963
19964         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19965         on a literal field. Fixes #74751.
19966
19967 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19968
19969         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19970
19971 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19972
19973         * objects.cs: Add missing null casting test.
19974
19975 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19976
19977         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19978         in wrapper methods. Also rename 'address' variable to 'offset'.
19979
19980 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19981
19982         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19983         warnings.
19984         
19985         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19986
19987         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19988         work on windows.
19989
19990 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19991
19992         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19993
19994 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19995
19996         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19997         just the last bytes.
19998
19999 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20000
20001         * aot.c (mono_compile_assembly): Fix warning.
20002
20003         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
20004         by the _MSC_VER stuff.
20005
20006 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
20007
20008         * inssel-long.brg: Fix #74588.
20009
20010         * cpu-amd64.md: Fix #74591.
20011
20012         * iltests.il: Add new regression tests.
20013
20014 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
20015
20016         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
20017         valuetype.
20018
20019 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
20020
20021         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
20022
20023         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
20024         from Bill Middleton <flashdict@gmail.com>.
20025
20026 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20027
20028         * arrays.cs: Add new regression test. Fix warnings.
20029
20030 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20031
20032         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20033         and leakage in CKFINITE.
20034
20035         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20036         this to a null op since it is called on amd64 too.
20037
20038         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20039
20040         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20041         body since this is not used on amd64.
20042         
20043         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20044
20045         * mini-amd64.c: Remove obsolete fixmes.
20046
20047         * mini.c (print_method_from_ip): Fix debugging support.
20048
20049 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20050
20051         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20052         so that expressions that don't give much gain are not reduced.
20053         * ssapre.h: Likewise.
20054
20055 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20056
20057         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20058
20059         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20060
20061         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20062
20063 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20066
20067         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20068
20069 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20070
20071         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20072         stack touching.
20073
20074         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20075
20076         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20077
20078         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20079
20080         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20081         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20082
20083         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20084
20085         * mini-x86.c: Fix up stack overflow handling.   
20086
20087         * exceptions.cs: Add new regression test.
20088
20089 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20090
20091         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20092         mono_jit_thread_attach.
20093
20094         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20095
20096 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20097
20098         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20099         avoid calling constructors using callvirt.
20100
20101         * inssel.brg: Fix #74073.
20102
20103 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20104
20105         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20106         compilation with non-GCC compilers.
20107         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20108         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20109
20110 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20111
20112         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20113         klass->interface_offsets (will likely fix bug#74073).
20114
20115 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20116
20117         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20118
20119 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20120
20121         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20122         to amd64_div_reg_size ().
20123         
20124         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20125
20126 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20129
20130 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20133
20134 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20135
20136         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20137         
20138         * mini.c (mono_precompile_assembly): Load and precompile referenced
20139         assemblies as well. Fixes #74015.
20140
20141 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20142
20143         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20144
20145 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20146
20147         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20148         a lot of checks and (anyway) permissions cannot work until corlib is 
20149         loaded.
20150
20151 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20152
20153         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20154
20155 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20156
20157         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20158         calls (fixes bug#72824).
20159
20160 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20161
20162         * mini.c: fix tail recursion elimination (see test in bug#73936).
20163
20164 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20165
20166         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20167         some fp functions in sse2 mode.
20168
20169 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20170
20171         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20172
20173 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20174
20175         * mini.h mini.c: Add mono_get_jit_tls_key ().
20176
20177         * mini-x86.c: Enable fast TLS support on windows.
20178
20179 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20180
20181         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20182         * mini.c: Check for p/invoke method when generating code. If a
20183         p/invoke method, or it's class, isn't decorated with [Suppress
20184         UnmanagedCodeSecurity] then generate code to call System.Security.
20185         UnmanagedDemand (only if the security manager is active).
20186
20187 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20190         last change as it seems to cause strange crashes.
20191         
20192 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20193
20194         * *.c: handle unsafe function pointers where needed.
20195
20196 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20197
20198         * mini.c (mono_jit_free_method): Remove the fixme too.
20199
20200 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20201
20202         * mini.c: As discussed, make the code actually free the delegate
20203         thunk now, to enable the debugging of delegate problems, use
20204         MONO_DEBUG=1 when running Mono. 
20205
20206         This takes also care of parts of the leaks as seen by Joe.
20207
20208 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20209
20210         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20211         thread_tls_offset calculation.
20212
20213 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20214
20215         * declsec.c: Reworked linkdemand checks for icall. The previous code
20216         was using the declaration code (untrusted) and didn't work as expected
20217         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20218         specific case.
20219
20220 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20221
20222         * iltests.il: Add new localloc test.
20223
20224         * mini-amd64.c: Handle large stack allocations the same way as on
20225         windows if stack overflow handling is working.
20226         
20227         * mini-amd64.c: Allocate the signal stack using mmap.
20228
20229         * mini.c (sigsegv_signal_handler): Fix reading of context.
20230
20231         * mini-exceptions.c: Fix up stack overflow handling.
20232
20233         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20234
20235         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20236
20237         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20238
20239         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20240
20241         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20242         tramp_init functions as they are no longer needed.
20243
20244 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20245
20246         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20247         
20248         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20249
20250         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20251         
20252         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20253         support that now.
20254
20255         * mini-ops.h: Add OP_LMUL_IMM.
20256
20257         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20258         long mul/div opcodes as intrinsic.
20259
20260         * mini-amd64.c (emit_call): Handle the case when the callee might be
20261         an AOT method.
20262
20263 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20264
20265         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20266         extra safe.
20267         
20268         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20269
20270         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20271
20272 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20273
20274         * mini.c (mono_codegen): Don't leak here, to help people running
20275         monogrind.
20276
20277 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20280         conversions in sse2 mode.
20281
20282         * basic-float.cs: Add regression test.
20283         
20284         * mini-amd64.c: Reenable sse2.
20285
20286 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20287
20288         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20289
20290 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20291
20292         * driver.c: Copyright text should include 2005.
20293         
20294 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20295
20296         * cpu-amd64.md (load_membase): Fix more max lengths.
20297
20298 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20299
20300         * cpu-amd64.md (load_membase): Fix max length.
20301
20302         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20303
20304         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20305
20306         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20307         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20308
20309         * basic-float.cs: Add rounding regression test.
20310
20311         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20312
20313 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20314
20315         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20316         structures in registers for pinvoke wrappers.
20317
20318 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20319
20320         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20321
20322 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20323
20324         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20325         wrapper to mono_jit_thread_attach.
20326
20327         * mini.c (mini_jit_thread_attach): New jit icall.
20328
20329         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20330         native->managed wrappers.
20331
20332         * exceptions.cs: Add new regression test.
20333
20334         * mini.c (optimize_branches): Check regions in the cbranch to throw
20335         block case as well. Fixes #73242.
20336
20337 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20338
20339         * mini.c: thread safety fixes.
20340
20341 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20342
20343         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20344         patching stuff, since delegates use jump trampolines so there is
20345         no caller.
20346
20347         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20348         jump trampolines.
20349         
20350         * tramp-amd64.c: Fix build.
20351
20352         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20353         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20354
20355         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20356         Rename this to mono_arch....
20357         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20358
20359         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20360
20361         * mini-amd64.c (emit_call): If both the caller and the callee is
20362         guaranteed to have 32 bit addresses, emit a normal call.
20363
20364         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20365
20366         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20367         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20368         method_ptr inside delegates.
20369
20370 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20371
20372         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20373         invalidated. Fixes #73001.
20374
20375         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20376
20377         * mini-x86.c: Only use stdcall for pinvokes on windows.
20378
20379 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20380
20381         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20382         * mini-x86.c: remove unreliable __thread var offset detection,
20383         use the correct accessors and enable by default.
20384
20385 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20386
20387         * mini.c (mono_jit_free_method): Fix memory leak.
20388
20389 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20390
20391         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20392
20393 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20394
20395         * cpu-amd64.md: Fix lengths of atomic opcodes.
20396
20397 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20398
20399         * driver.c: try to not imply using ICU is any good.
20400
20401 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20402
20403         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20404         functions as inline ops.
20405
20406         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20407         some Interlocked functions as inline ops.
20408
20409         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20410
20411         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20412
20413         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20414
20415         * mini.c: Add support for OP_NOT_TAKEN.
20416
20417         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20418         structures in registers for pinvoke wrappers.
20419
20420         * mini-amd64.c: Fix warnings.
20421
20422 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20423
20424         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20425
20426         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20427
20428         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20429         address instead of loading the address from it.
20430
20431         * mini-x86.c: Add support for returning small structs in registers
20432         on Win32. Fixes part of #70864.
20433         
20434 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20435
20436         * trace.c (get_token): Improve error checking.
20437
20438 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20439
20440         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20441
20442 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20443  
20444         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20445         it can be reused for MonoClass.
20446         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20447         _LINKDEMAND.
20448
20449 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20450
20451         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20452         instead of a MonoReflectionMethod. The method information wasn't used
20453         when displaying SecurityException details (but will be now).
20454
20455 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20456
20457         * Makefile.am : windows build fix.
20458
20459 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20460
20461         * iltests.il: Add new regression test.
20462
20463         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20464         #72522.
20465
20466 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20467  
20468         * mini.c: Moved linkdemand check into helper function check_linkdemand
20469         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20470         LDFTN, LDVIRTFTN).
20471
20472 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20473
20474         * declsec.c: Added statistics counter for different kinds of 
20475         LinkDemands.
20476         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20477         (and commented) declaration.
20478         * mini.c: Added statistics counter for security Demand code 
20479         generation. Added display of security statistics.
20480
20481 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20482
20483         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20484         Fix compilation errors under gcc-2.95.
20485
20486 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20487
20488         * mini.c, driver.c: Use the new jit trampoline hashtable
20489
20490 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20491
20492         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20493
20494 2005-02-11  Martin Baulig  <martin@ximian.com>
20495
20496         * debug-mini.c (mono_debug_close_method): Free the line number array.
20497
20498 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20499
20500         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20501         icalls.
20502
20503         * mini.h: Bump AOT file format version. 
20504
20505 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20506
20507         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20508         APTC and P/Invoke.
20509         * declsec.h: Added macros to get/set lazyly initialized security 
20510         informations about assemblies. Added new enum for different type of
20511         possible LinkDemand violation. Added function to check LinkDemands.
20512         * mini.h: Added a field to MonoCompile to hold any security violation
20513         detected when JITting a method (so it can be thrown later).
20514         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20515         and CEE_CALLVIRT. Added code to throw exception at the end of
20516         mini_method_compile (note: the exception is unhandled right now).
20517
20518 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20519
20520         * mini.c, jit-icalls.c: use the managed implementation of
20521         memset for initobj and memset, to avoid managed <-> unmanaged
20522         transitions.
20523
20524 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20525
20526         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20527         optimization if it would need a GOT var.
20528
20529         * basic.cs: Add tests for constant propagation and switch statements.
20530
20531         * ssa.c: Fix out-of-range constant propagation and switch statements.
20532
20533 2005-02-09    <vargaz@freemail.hu>
20534
20535         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20536
20537 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20538
20539         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20540
20541 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20542
20543         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20544
20545 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20546
20547         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20548         arithmetic operations.
20549
20550 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20551
20552         * mini-ppc.c: add a workaround for broken user code that
20553         DllImports vararg functions with non-vararg signatures.
20554
20555 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20556
20557         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20558         meaningfull error message for assemblies written in Managed C++.
20559
20560         * tramp-amd64.c mini-amd64.h: Add support for 
20561         create_trampoline_from_token ().
20562
20563         * aot.c mini-x86.c abcremoval.c: Applied patch from
20564         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20565
20566 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20567
20568         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20569         which takes a MonoImage/token as parameter instead of a MonoMethod.
20570
20571         * aot.c: Use the new trampoline for initializing vtables.
20572
20573         * aot.c: Add support for ldfld/stfld_remote wrappers.
20574
20575         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20576         rules for compare <MEM>, IMM.
20577
20578         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20579
20580         * aot.c: Handle inherited finalizers correctly.
20581
20582 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20583
20584         * inssel.brg (stmt): Add a missing _setup_... ().
20585
20586         * aot.c: Save some parts of the class state to the AOT file and use it
20587         to recompute that state when a class is initialized.
20588
20589         * mini.c: Install AOT hooks into the runtime.
20590
20591         * mini.h: Bump AOT file format version.
20592         
20593         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20594         Fixes #72148.
20595
20596         * iltests.il: Add new test.
20597
20598 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20599
20600         * mini.c: fix typo.
20601
20602 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20603
20604         * mini.c: setup the statistical profiler in the thread attach
20605         callback to cope with the new single thread code.
20606
20607 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20608
20609         * mini-ppc.c: ensure we have enough room for the profiler
20610         calls (fixed bug#72084).
20611
20612 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20613
20614         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20615         it.
20616
20617 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20618
20619         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20620
20621 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20622
20623         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20624         to succesfully execute parrotbench).
20625         * ssapre.h: Likewise.
20626
20627 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20628
20629         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20630         variable for stores to method arguments (fixes a SSAPRE issue).
20631
20632 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20633
20634         * mini.c: handle value types in dup, fixes gen-112.cs.
20635
20636 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20637
20638         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20639         sequence for calls in dynamic methods to avoid thunks.
20640
20641 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20642
20643         * mini.c: correctly remove dynamic methods from the hashtable.
20644
20645 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20646
20647         * driver.c: Disabled SSAPRE until fix the bug that appears
20648         in IronPython's parrotbench.
20649
20650 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20651
20652         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20653
20654         * mini.c (mono_method_to_ir): Revert the previous change.
20655         
20656         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20657         when AOT compiling.
20658
20659         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20660         mono_jit_info_table_find () etc. when running under valgrind.
20661
20662         * inssel.brg: Fix warnings.
20663
20664         * mini-exceptions.c: Fix warnings.
20665
20666 2005-01-31  Martin Baulig  <martin@ximian.com>
20667
20668         * driver.c (compile_all_methods_thread_main): Don't try to compile
20669         generic methods or anything which has type parameters.
20670
20671 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20672
20673         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20674
20675         * TestDriver.cs: Add --verbose flags.
20676
20677         * graph.c ssa.c: Fix 64 bit warnings.
20678         
20679         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20680         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20681         Fix 64 bit warnings.
20682
20683         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20684         variable not spotted by gcc.
20685         
20686         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20687         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20688         X86_COMPARE_MEMBASE opcodes.
20689
20690         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20691
20692 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20693
20694         * *: MonoMethod->signature might be NULL now. You *MUST* use
20695         mono_method_signature.
20696
20697 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20698
20699         * driver.c (compile_all_methods_thread_main): Compile the methods
20700         without invoking cctors.
20701
20702 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20703
20704         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20705         * basic-calls.cs: test for the above.
20706
20707 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20710         MonoJitInfo changes.
20711
20712 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20713
20714         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20715         eagerly if it contains dynamic methods.
20716         
20717         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20718
20719         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20720         trace, it is now computed by an icall from trace_ips.
20721         
20722         * mini-exceptions.c: Fix a warning.
20723
20724 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20725
20726         * mini-exceptions.c: don't bother getting stack trace info if
20727         it's not going to be used.
20728
20729 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20730
20731         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20732         ssapre-mini-ops.h.
20733
20734 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20735
20736         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20737
20738         * aot.c: Avoid calling mono_method_get_header () if not needed.
20739
20740         * mini.h: Bump AOT file format version.
20741         
20742         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20743
20744         * mini.c (mono_print_tree): Print more info for calls.
20745
20746 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20747
20748         * declsec.h: Remove warning by adding missing include for marshal.h
20749
20750 2005-01-26  Martin Baulig  <martin@ximian.com>
20751
20752         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20753         `ip' twice.
20754
20755 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20756
20757         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20758         flags.
20759
20760         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20761
20762         * aot.c (mono_compile_assembly): Fix a warning.
20763
20764 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20765
20766         * declsec.c: Look for security attributes on the original MonoMethod 
20767         (and not the wrapped one). This fix permissions on icalls.
20768
20769 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20770
20771         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20772
20773         * mini.c (mono_allocate_stack_slots): Add a fixme.
20774
20775         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20776
20777 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20778
20779         * inssel.brg: optimize casts of sealed types (more
20780         optimizations waiting for fixes in remoting).
20781
20782 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20783
20784         * inssel.brg (stmt): Add another dummy rule.
20785
20786         * driver.c: Fix warnings.
20787
20788         * driver.c (mono_main): If running under valgrind, instruct glib to use
20789         the system allocation functions so valgrind can track the memory
20790         allocated by the g_... functions.
20791
20792         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20793
20794         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20795
20796         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20797
20798         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20799         variables in try regions.
20800
20801         * mini.c (mini_method_compile): Don't disable optimizations on large
20802         methods when AOT compiling.
20803
20804         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20805         allocate stack slots. Not yet used.
20806
20807 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20808
20809         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20810
20811 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20812
20813         * mini-ppc.c: make the branch info relative as the code
20814         buffer can be reallocated.
20815
20816 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20817
20818         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20819         * driver.c: Removed the AOT/security restriction. Now initialize the
20820         security manager (in metadata) if --security is used.
20821         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20822         rather than the pointer to declarative security, when AOT is used.
20823
20824 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20825
20826         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20827         basic blocks, reduced intrinsic exception throwing code size.
20828
20829 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20830
20831         * driver.c (mini_usage): Reorder the usage screen.
20832
20833 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20834
20835         * mini.c (mono_resolve_patch_target): Fix warning.
20836
20837 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20838
20839         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20840         previous patch.
20841
20842         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20843
20844         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20845         breaks the amd64 build.
20846
20847         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20848         register allocation. Fixes #71454.
20849
20850         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20851
20852         * arrays.cs: Add new regression test.   
20853
20854 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20855
20856         * ssapre.c: Turned usage of snprintf to GString.
20857         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20858         (I left it on by mistake in my previous commit).
20859
20860 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20861
20862         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20863         on cond branch optimization (fixes bug# 71515).
20864
20865 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20866
20867         * abcremoval.c: Fixed bug 71062.
20868         * abcremoval.h: Likewise.
20869
20870 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20871
20872         * mini.c: Added a new functionality to optimize_branches, the removal
20873         of useless basic blocks, and fixed some problem in the removal of
20874         critical edges; some utility functions added for both purposes.
20875         * ssapre.c: Added complex expression support, and fixed bug 70637.
20876         * ssapre.h: Likewise.
20877         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20878         enabled in SSAPRE.
20879         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20880         * driver.c: Re-enabled SSAPRE.
20881
20882 2005-01-19  Martin Baulig  <martin@ximian.com>
20883
20884         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20885         the result of mono_get_method_constrained().
20886
20887 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20888
20889         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20890         manager.
20891
20892 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20893
20894         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20895         be detected.  Fixes #59296.
20896
20897 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20898
20899         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20900         which can happen. Fixes #71361.
20901
20902 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20903
20904         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20905         manager.
20906
20907 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20908
20909         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20910         appdomain-unload.exe to fail.
20911         
20912         * mini.c: Fix some memory leaks.
20913
20914 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20915
20916         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20917         Fixed bug and sped up some codepaths.
20918
20919 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20920
20921         * mini.c: Fix some memory leaks.
20922
20923         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20924         conversion.
20925
20926         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20927
20928         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20929         #71320.
20930
20931         * iltests.il: Add regression test for #71320.
20932
20933 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20934
20935         * mini.c (mono_codegen): Fix installation of profiler hooks.
20936
20937         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20938
20939 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20940
20941         * mini.h, mini.c, cfold.c: optimize access to enum
20942         readonly fields, too. Eval conditional branches if possible
20943         to perform unreachable code removal in more cases.
20944
20945 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20946
20947         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20948
20949         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20950         code manager.
20951
20952         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20953         WinXP DEP. Fixes #71244.
20954
20955 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20956
20957         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20958
20959 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20960
20961         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20962
20963 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20964
20965         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20966         changes.
20967
20968         * mini.h: Bump AOT version.
20969
20970         * mini.h (MonoCompile): Change exvar to a hash table.
20971
20972         * mini.c: Allocate a separate exvar for each handler block.
20973
20974         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20975
20976         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20977         ex var with the pending exception and only throw if the two are equal.
20978         Fixes #68552.
20979         
20980         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20981
20982         * mini-x86.c: Fix warnings.
20983
20984         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20985         used by all the ports now.
20986
20987         * aot.c: Add write-symbols and save-temps options.
20988
20989 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20990
20991         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20992
20993 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20994
20995         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20996         operations.
20997
20998         * tramp-s390.c: Check vtable slot belongs to the domain.
20999
21000         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
21001         as per other platforms.
21002
21003         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
21004
21005 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
21006
21007         * driver.c: we don't run the Main() code in a subthread anymore.
21008
21009 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
21010
21011         * mini.c: added experimental rtc support in the statistical
21012         profiler: if the user has the permission, more accurate statistics
21013         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
21014         The MONO_RTC value must be restricted to what the linux rtc allows:
21015         power of two from 64 to 8192 Hz.
21016
21017 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21018
21019         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
21020
21021 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
21022
21023         * mini-ppc.c: better icache flush for smp.
21024
21025 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21026
21027         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21028
21029         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21030         amd64 port, not yet used.
21031
21032 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21033
21034         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21035         a struct type.
21036
21037 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21038
21039         * driver.c: Added --security option to activate the security manager.
21040         Right now this will allow code generation for declarative demands and
21041         is disabled when AOT is specified.
21042         * mini.c: Add code generation for declarative security demands.
21043         * mini.h: Add mono_use_security_manager as an extern gboolean.
21044
21045 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21046
21047         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21048         emitting more dense assembly code.
21049
21050         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21051         exception throwing stuff.
21052
21053 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21054
21055         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21056         dead code.
21057
21058         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21059         left in by mistake.
21060
21061         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21062         fixed.
21063
21064         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21065
21066         * tramp-*.c: Only patch vtable slots if the object is in the current
21067         domain. Fixes appdomain-unload.exe.
21068
21069         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21070         
21071         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21072         x86 branch.
21073
21074 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21075
21076         * mini.c (reverse_branch_op): New helper function.
21077
21078         * mini.c (optimize_branches): Run the new optimization only on 
21079         platforms which support it. Also reverse all kinds of branches.
21080
21081         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21082
21083         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21084         a throw statement.
21085
21086         * mini.c (optimize_branches): Reverse not-equals branches if the false
21087         bblock is a throw. This happens a lot of time with argument checking in
21088         corlib.
21089
21090         * mini.c (mono_codegen): Add support for placing basic blocks after
21091         the function epilogue.
21092
21093         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21094         function epilogue.
21095         
21096 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21097
21098         * mini.c (setup_stat_profiler): Only set this up if the platform
21099         supports ITIMER_PROF.
21100
21101 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21104         previous patch.
21105
21106         * inssel.brg: Fix a warning.
21107
21108 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21109
21110         * mini.c: added support for statistical profiler 
21111         (run with: --profile=default:stat).
21112
21113 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21114
21115         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21116
21117         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21118
21119         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21120         related to global registers from the amd64 port.
21121
21122 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21123
21124         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21125
21126         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21127         with global registers.
21128         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21129
21130         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21131
21132 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21133
21134         * debug-mini.c (encode_value): Fix off-by-one.
21135
21136         * aot.c (encode_value): Likewise.
21137
21138         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21139
21140 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21141
21142         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21143         AOT.
21144
21145         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21146         
21147         * aot.c (emit_method_info): Increase size of temp buffer.
21148
21149         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21150         the AOT case.
21151
21152 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21153
21154         * aot.c (emit_method_info): Fix build.
21155         
21156         * aot.c: Further rework of the AOT file format to reduce the size of
21157         the method info data.
21158
21159         * mini.h: Bump AOT file format version.
21160
21161 2004-12-27  Martin Baulig  <martin@ximian.com>
21162
21163         * mini.c (mini_get_method): New static method; call
21164         mono_get_method_full() and mono_get_inflated_method().
21165         (mono_method_to_ir): Use mini_get_method() instead of
21166         mono_get_method_full(). 
21167
21168 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21169
21170         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21171
21172 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21173
21174         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21175
21176         * inssel-amd64.brg: Add some optimization rules.
21177
21178 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21179
21180         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21181         standard not GC'd stuff is fine.
21182
21183 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21184
21185         * aot.c: Rework the AOT file format to get rid of most of the global
21186         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21187
21188         * mini.h: Bump AOT file format version.
21189         
21190 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21191
21192         * mini.h: Bump AOT file format version.
21193
21194         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21195         address is inside a GOT.
21196
21197         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21198
21199         * cpu-pentium.md: Increase the maximum size of some instructions which
21200         might involve a got access.
21201         
21202         * mini.c (get_method_from_ip): Another debug helper function.
21203
21204         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21205         when got var accesses are created during the decompose phase.
21206
21207         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21208
21209         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21210         argument mini_compile_method and to MonoCompile, and use this to
21211         determine whenever a given method is compiled for AOT. This allows the
21212         other methods compiled during AOT compilation to be free of AOT stuff,
21213         so the backends does not need to add special support for them by
21214         creating a fake GOT etc.
21215
21216         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21217         longer needed.
21218
21219 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21220
21221         * mini.c (mono_method_to_ir): It turns out that some of the
21222         x-appdomain wrappers are lax with types, so just ignore this for
21223         all wrappers.
21224
21225         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21226         at the vtable->klass. If it is non-shared code we can just use the
21227         vtable.
21228
21229 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21230
21231         * mini-ppc.c: access MonoDomain from tls, too.
21232
21233 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21234
21235         * declsec.c: Removed unused variable (and related warning ;-)
21236
21237 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21238
21239         * iltests.il: New test for LDELEMA on an array of ref types.
21240
21241         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21242         all ldelema's on reftypes.
21243         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21244         it was the wrong place to put it.
21245
21246         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21247         register to pop to make this cleaner, at the request of Paolo.
21248
21249 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21250
21251         * mini-ops.h (OP_GETHASHCODE): New op.
21252
21253         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21254
21255         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21256         operation.
21257
21258         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21259         by 25%.
21260         
21261         * mini-x86.c (mono_arch_output_basic_block): Rather than
21262
21263         add ebp, 4
21264
21265         Emit
21266
21267         pop edx
21268
21269         The first is 3 bytes while the second is 1. This saves 36 kb on
21270         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21271         see a small boost because of icache locality.
21272
21273         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21274
21275 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21276
21277         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21278         started code sharing with the generic code.
21279
21280 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21281
21282         * mini-ppc.c, cpu-g4.md: added code for direct access to
21283         tls data slots.
21284
21285 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21286
21287         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21288          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21289         to OP_TLS_GET.
21290
21291 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21292
21293         * declsec.c|h: Added functions to cache the declarative stack modifiers
21294         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21295         structure.
21296         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21297         created. Register internal calls for System.Security.SecurityFrame::
21298         _GetSecurityFrame and _GetSecurityStack.
21299         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21300         the definitions for the new stack walk/callback mechanism.
21301         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21302         first security frame for LinkDemands and InheritanceDemands) and
21303         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21304         from lupus.
21305         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21306         walk initialization (lupus).
21307
21308 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21309
21310         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21311         idiom.
21312         (handle_loaded_temps): Do not create a temporary variable for
21313         things that we know are temps. They will never be modified.
21314         (mono_spill_call): Set MONO_INST_IS_TEMP
21315         (mono_emulate_opcode): ditto
21316         (emit_tree): ditto
21317         (mono_method_to_ir.CEE_DUP): ditto
21318
21319 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21320
21321         * mini.c (type_to_eval_stack_type): Make this handle the void type
21322         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21323         (emit_tree): use ip_in_bb to special case some common idioms
21324         Update all callers to pass in the IP.
21325         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21326
21327         This gives us a nice 2% speedup in mcs bootstrap.
21328
21329         * mini-x86.c (peephole_pass): Peephole pass to make
21330         mov  [foo], eax
21331         push [foo]
21332
21333         into
21334
21335         mov [foo], eax
21336         push eax
21337
21338         * mini.c (ip_in_bb): new method.
21339         (mono_method_to_ir): use this method rather than doing the hash
21340         lookup ourselves.
21341
21342         * linear-scan.c (mono_linear_scan): When expiring actives, you
21343         don't need to keep around variables that expire on this
21344         instruction. This makes it so that:
21345              a = b + 1
21346         will turn into:
21347              store (ebx add (ebx, 1))
21348         which will become
21349              add ebx, 1
21350
21351 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21352
21353         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21354         combination to avoid doing two copies. Fix up problems with previous
21355         patch.
21356
21357         * mini.c: Fix 64 bit warnings.
21358
21359         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21360
21361 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21362
21363         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21364         changes from the x86 code.
21365
21366         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21367
21368 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21369
21370         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21371         throwing code to reduce its size, unify the AOT and non-aot code and 
21372         get rid of relocations in the AOT case.
21373
21374         * mini-x86.h mini.c exceptions-x86.c 
21375         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21376         raise corlib exceptions which doesn't require relocations in the 
21377         caller.
21378
21379         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21380
21381 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21382
21383         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21384         needed.
21385
21386         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21387         in the AOT case.
21388
21389 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21390
21391         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21392         with add function when used from Inc/dec atomic 
21393         functions. Re-enabled optimization on x86.
21394         * mini-ops.h: renamed atomic_add functions to
21395         allow _add to match the Interlocked::Add and
21396         _add_next to match Interlocked::Inc/Dec.
21397
21398 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21399
21400         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21401         linking of BBs to the end BB, and enabled SSAPRE also with
21402         consprop and copyprop (which was prevented by that bug).
21403
21404 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21405
21406         * mini-x86.c: disabling the Interlocked optimizing code. 
21407
21408 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21409
21410         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21411         file version check.
21412         
21413 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21414
21415         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21416         interlocked optimization due lack of support on x86, rewrote 
21417         exchange to take into account that base may be in eax.
21418         
21419         xsp works again; activated Interlocked optimizing code.
21420         
21421 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21422
21423         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21424
21425 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21426
21427         * mini-ops.h: Add new opcodes.
21428
21429         * mini.h: Add new patch types. Add got_var to MonoCompile.
21430
21431         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21432         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21433         make it work with all kinds of patchable code.
21434
21435         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21436         address of the GOT, and referencing entries in the GOT.
21437
21438         * mini.c: Add code to load the GOT address if needed by an opcode.
21439
21440         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21441         independent AOT code on the x86 using an elf-style Global Offset Table.
21442
21443 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21444
21445         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21446
21447 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21448
21449         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21450         when running xsp.
21451
21452 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21453
21454         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21455         of Interlocked:Increment/Decrement/Add as inline ops.
21456         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21457
21458 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21459
21460         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21461         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21462
21463 2004-12-12  Duncan Mak  <duncan@ximian.com>
21464
21465         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21466         again. `patch_info->table_size' is no longer valid after Zoltan's
21467         commit #37636.
21468
21469 2004-12-12  Martin Baulig  <martin@ximian.com>
21470
21471         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21472         if we are the "real" method, ie. not an inlined method inside it.
21473
21474 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21475
21476         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21477         before we look in the special fields table. This fixes
21478         ../tests/thread-static-init.cs.
21479
21480 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21481
21482         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21483         for Array get_Rank and get_Length. Fixes bug #70465.
21484
21485 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21486
21487         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21488         separate structure to reduce the size of MonoJumpInfo.
21489
21490 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21491
21492         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21493
21494 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21495
21496         * mini.c (mini_get_inst_for_method): Changed to allow ports
21497         to return a MonoInst instead of opcode 
21498         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21499         
21500         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21501         Allow ports to return a created MonoInst instead of op-code, will enable
21502         new optimizations.
21503         (renamed mini_get_opcode_for_method to better reflected the functionality)
21504
21505 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21506
21507         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21508
21509 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21510
21511         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21512         Fixes #69985.
21513
21514 2004-12-08  Martin Baulig  <martin@ximian.com>
21515
21516         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21517         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21518
21519 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21520
21521         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21522         correctly.
21523
21524         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21525         arithmetic.
21526
21527 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21528
21529         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21530
21531 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21532
21533         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21534         bug introduced by the previous patch.
21535
21536 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21537
21538         * mini-ppc.c, objectc.cs: handle large structs passed by value
21539         (fixes bug #69972).
21540
21541 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21542
21543         * mini-ppc.c: OP_ARGLIST implementation from
21544         Geoff Norton  <gnorton@customerdna.com>.
21545
21546 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21547
21548         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21549         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21550
21551 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21552
21553         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21554
21555 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21556
21557         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21558         support.
21559
21560 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21561
21562         * mini-sparc.c: Zero out localled-ed memory.
21563
21564         * iltests.il: Add tests for zeroing out localloc-ed memory.
21565
21566 2004-12-04  Martin Baulig  <martin@ximian.com>
21567
21568         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21569         mono_method_get_signature_full().       
21570
21571 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21572
21573         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21574         and some utility functions (always for SSAPRE), integrated SSAPRE.
21575         * mini.h: Likewise.
21576         * driver.c: Added ssapre option.
21577         * ssa.c: Small fix on OP_ARG handling.
21578         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21579         * Makefile.am: Likewise.
21580
21581 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21582
21583         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21584         now in the xp code.
21585
21586         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21587         icall.
21588
21589 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21590
21591         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21592         
21593         * cpu-s390.md : Increase instruction length of oparglist.
21594
21595         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21596
21597 2004-11-30  Martin Baulig  <martin@ximian.com>
21598
21599         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21600         virtual generic methods.  We call a special helper_compile_generic_method()
21601         icall to retrieve the method from the vtable, inflate and compile
21602         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21603
21604         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21605
21606 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21607
21608         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21609
21610 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21611
21612         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21613         Fixes #69929.
21614
21615 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21616
21617         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21618         platforms with PIC aot.
21619
21620 2004-11-28  Martin Baulig  <martin@ximian.com>
21621
21622         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21623         Fixes gen-112.cs.
21624
21625 2004-11-28  Martin Baulig  <martin@ximian.com>
21626
21627         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21628         the result of mono_type_get_underlying_type() to check whether
21629         we're byref.
21630
21631 2004-11-26  Martin Baulig  <martin@ximian.com>
21632
21633         * mini.c
21634         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21635         in the g_assert().
21636
21637 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21638
21639         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21640         the same way as the other arguments so they won't get clobbered.
21641
21642         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21643         calls through R11 since it is clobbered by the trampoline code.
21644
21645 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21646
21647         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21648         pick up in-tree mscorlib.dll.
21649
21650 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21651
21652         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21653
21654         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21655         runtime data/code are now stored in a table similar to the GOT in ELF. 
21656         This allows the code itself to be position independent.
21657
21658         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21659         loading changes.
21660
21661         * aot.c: Attach ELF type (object/function) directives to all global
21662         symbols.
21663
21664         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21665
21666         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21667
21668         * mini-amd64.h: Turn on PIC AOT code.
21669
21670         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21671         returning the offset within an OP_AOTCONST instruction where the GOT
21672         offset needs to be added.
21673
21674         * mini.h: Bump AOT file format version.
21675
21676 2004-11-25  Martin Baulig  <martin@ximian.com>
21677
21678         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21679         uninflated generic methods.
21680
21681 2004-11-25  Martin Baulig  <martin@ximian.com>
21682
21683         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21684
21685 2004-11-24  Martin Baulig  <martin@ximian.com>
21686
21687         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21688         original klass (this only applies for generic instances).
21689
21690 2004-11-24  Martin Baulig  <martin@ximian.com>
21691
21692         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21693         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21694         that array).
21695
21696 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21697
21698         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21699         localloc. Fixes #69678.
21700
21701         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21702         
21703 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21704
21705         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21706         used SSE registers on pinvoke calls. Fixes #69774.
21707
21708 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21709
21710         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21711         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21712
21713 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21714
21715         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21716         Refer directly to the mcs/ tree.
21717
21718 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21719
21720         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21721         Check if a trampoline for a synchronized method is required. 
21722
21723 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21724
21725         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21726         with localloc if needed. Throe arithmetric exception in
21727         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21728         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21729
21730 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21731
21732         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21733         types before switching on type.  Fixes #69622.
21734
21735 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21736
21737         * Makefile.am (check-local): New.  Integrate into 'make check'.
21738         (MCS,RUNTIME): Define using in-tree mono and mcs.
21739         (ILASM): New.
21740         (%.exe): Use $(ILASM).
21741
21742 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21743
21744         * mini-ppc.c: adjust initial prolog size (bug #69691).
21745
21746 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21747
21748         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21749         #69664.
21750
21751 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21752
21753         * Makefile.am (clean-local): Rename from 'clean'.
21754
21755 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21756
21757         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21758         to mono_arch_is_int_overflow. 
21759         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21760         SIGFPE events.
21761
21762 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21763
21764         * declsec.c|h: New files to support declarative security attributes.
21765         Added function to check if a method has (applicable) security.
21766         * mini.c|h: Add check for declarative security attributes in
21767         mono_method_check_inlining.
21768         * Makefile.am: Added declsec.c and declsec.h to the build.
21769
21770 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21771
21772         * mini.c, mini.h: update to keep dynamic code info per-domain.
21773
21774 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21775
21776         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21777         (mini_init): Get rid of it from here too.
21778
21779 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21780
21781         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21782         implemented OP_RETHROW (patch by Geoff Norton
21783         <gnorton@customerdna.com>).
21784
21785 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21786
21787         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21788         between appdomains.  Fixes appdomain-unload on PPC.
21789
21790 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21791
21792         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21793         mini-exceptions.c: handle the new wrapper types.
21794         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21795         token value as a MonoClass* when compiling a wrapper.
21796         mono_jit_create_remoting_trampoline now takes an additional
21797         MonoRemotingTarget parameter.
21798         
21799 2004-11-10  Martin Baulig  <martin@localhost>
21800
21801         * mini.c (mono_method_to_ir): Use `generic_container->context'
21802         rather than creating a new one.
21803
21804 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21805
21806         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21807
21808         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21809
21810 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21811
21812         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21813         the experimental aot cache stuff.
21814
21815 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21816
21817         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21818         mini-exceptions.c: update to exception clause structure changes.
21819
21820 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * exceptions-x86.c (throw_exception): Fix warnings.
21823
21824         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21825         for OP_RETHROW.
21826
21827 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21828
21829         * exceptions-sparc.c (get_throw_exception): Really fix this.
21830
21831 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21832
21833         * tramp-*.c: we no longer support icalls without wrappers, so
21834         a bit of code can be removed here
21835
21836 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21837
21838         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21839         patch.
21840
21841         * cpu-sparc.md: Add op_rethrow.
21842
21843         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21844
21845         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21846
21847         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21848         * mini-ops.h: Add OP_RETHROW.
21849
21850         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21851
21852         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21853
21854 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21855         
21856         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21857         Makes the output much easier to read
21858
21859 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21860
21861         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21862         prevents another huge leak when compiling with ssa. Secondly, the
21863         performance of doing this rather than freeing the lists is much
21864         better. GList does a lock every time you allocate a list link,
21865         so that it can use a memory pool. So, it is better to just use
21866         a memory pool of our own.
21867         
21868         * ssa.c, linear-scan.c: replace g_list_remove_link with
21869         g_list_delete.  The remove one does not free the GList, so we were
21870         leaking memory. On -O=all --compile-all with corlib, this cut down
21871         3 MB of allocations.
21872
21873 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21876
21877         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21878
21879         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21880         into a new function mono_create_jit_trampoline ().
21881
21882 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21883
21884         * trace.c (get_spec): Allow tracing of classes without a namespace.
21885
21886 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21887
21888         * mini.c: Fix pointer overwrite in mini_method_compile.
21889
21890 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21891
21892         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21893         The darwin ABI needs some special handling for 1 and 2 byte structs
21894         Lets use lbz/lhz instead of lwz everywhere.
21895         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21896         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21897         Use stb/sth for the former, and put the latter always on stack instead of in
21898         argument registers.
21899
21900 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21901
21902         * trace.c (is_filenamechar): Add '_'.
21903
21904 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21905
21906         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21907
21908         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21909
21910 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21911
21912         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21913         depends on libmonogc. Fixes #68805.
21914
21915 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21916
21917         * mini.c (mono_jit_free_method): Provide extra information for
21918         this error.  Currently this leaks, but will be turned into a
21919         developer option in the future.
21920
21921 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21922
21923         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21924
21925 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21926
21927         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21928         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21929         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21930
21931 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21932
21933         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21934         trampolines for AOT code.
21935
21936 2004-10-22    <vargaz@freemail.hu>
21937
21938         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21939         constructed types. Fixes #68136.
21940
21941 2004-10-21  Martin Baulig  <martin@ximian.com>
21942
21943         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21944         if it returns true, unwind the stack to the call instruction.
21945
21946 2004-10-21    <vargaz@freemail.hu>
21947
21948         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21949
21950         * mini.h: Bump AOT version number.
21951
21952         * objects.cs: Add another test for unbox trampolines.
21953
21954         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21955         valuetype methods.
21956
21957 2004-10-20    <vargaz@freemail.hu>
21958
21959         * driver.c: Add SHARED to the set of optimizations tested.
21960
21961         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21962
21963         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21964         used by CEE_NEWARR.
21965
21966         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21967
21968 2004-10-20  Martin Baulig  <martin@ximian.com>
21969
21970         * mini-exceptions.c (mono_handle_exception): Call
21971         mono_debugger_handle_exception() to tell the debugger about
21972         catch/finally clauses.
21973
21974 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21975
21976         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21977
21978         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21979         #68447.
21980
21981 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21982
21983         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21984         methods as their native size, fixed bug #57543, #57545.
21985         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21986         This saves a temporary register and mullw call down into 1 (minor perf
21987         increase for cases like sum = sum * 5;  This use to translate into:
21988             li r11,5
21989             mullw r28,r28,r11
21990         It now translates to
21991             mulli r28,r28,5
21992
21993 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21994
21995         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21996         #68388.
21997
21998 2004-10-11  Martin Baulig  <martin@ximian.com>
21999
22000         * mini.c (mono_method_to_ir): If we're a generic method, get the
22001         MonoGenericContainer from our MonoMethodNormal and create a
22002         MonoGenericContext from it.
22003
22004 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
22005
22006         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
22007
22008         * basic-long.cs: Add test for checked i8->i2 cast.
22009
22010 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22011
22012         * inssel-ppc.brg: added a couple of speedup rules.
22013
22014 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22015
22016         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
22017         to speed up rebuilds.
22018
22019 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22020
22021         * mini-s390.c: Minor fix to OP_OR_IMM.
22022
22023 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22024
22025         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22026         better. Fixes appdomain-unload.exe on sparc.
22027
22028 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22029
22030         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22031         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22032         see bug 67324.
22033
22034 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22035
22036         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22037
22038 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22039
22040         * mini.c: Always generate a field read/write wrapper for members
22041         of the class MarshalByRefObject since the actual instance could
22042         be a CBO.
22043
22044 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22045
22046         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22047
22048 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * driver.c mini.h trace.c: Move the setting of the main assembly into
22051         a separate function called mono_trace_set_assembly () and call it after
22052         actually loading the main assembly. Fixes #66872.
22053
22054 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22055
22056         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22057         using the code manager.
22058
22059 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22060
22061         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22062
22063 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22064
22065         * cpu-amd64.md: Fix bug in previous patch.
22066         
22067         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22068         #66650.
22069
22070 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22071
22072         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22073         mini-exceptions.c: updates for changed stack walk interface.
22074
22075 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22076
22077         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22078
22079 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22080
22081         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22082
22083 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22084
22085         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22086         since assemblies can't be unloaded.
22087         
22088 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22089
22090         * cpu-amd64.md: Fix more instruction lengths.
22091
22092         * cpu-amd64.md: Fix lengths of some instructions.
22093
22094 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22095
22096         * inssel.brg: Make the array ldelema check aot friendly.
22097
22098 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22099
22100         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22101
22102         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22103
22104 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22105
22106         * mini-x86.c: Fix build.
22107
22108         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22109         mono_type_get_underlying_type () helper function to simplify code.
22110         
22111 2004-09-09  Martin Baulig  <martin@ximian.com>
22112
22113         * mini-amd64.c: Don't access `type->data.klass' directly, call
22114         mono_class_from_mono_type() instead since the type may be a
22115         generic instance.
22116
22117 2004-09-09  Martin Baulig  <martin@ximian.com>
22118
22119         * mini-amd64.c (get_call_info): Fix support for generic instances.
22120         (add_valuetype): Use mono_class_from_mono_type() to get the class
22121         since we can be a generic instance.
22122
22123 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22124
22125         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22126
22127 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22128
22129         * liveness.c: reset spill costs on each scan: bug 62107
22130
22131 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22132
22133         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22134         unnecessary line that doesn't compile
22135
22136 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22139         trampolines, make them call an error function so people can fix their
22140         code.
22141
22142 2004-09-06  Martin Baulig  <martin@ximian.com>
22143
22144         * mini.c (mono_method_to_ir): When initializing locals, handle a
22145         generic instances like a valuetype if it's a valuetype and like a
22146         class if it's a class.
22147
22148 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22149
22150         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22151         stack. Fixes #64674.
22152
22153         * exceptions.cs: Add test for unwinding of call arguments.
22154
22155 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22156
22157         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22158         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22159         set the carry/borrow flag). The sparc and s390 implementations
22160         can now use optimized versions (and simplify the code). ppc bugfixes.
22161
22162 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22163
22164         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22165
22166 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * inssel-amd64.brg: Remove leftover 32 bit rule.
22169
22170         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22171
22172 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22173
22174         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22175         mono_arch_find_jit_info functions into a new function. Fix a memory
22176         leak.
22177
22178         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22179         refactored code.
22180         
22181 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22182
22183         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22184         as well.
22185         
22186         * exceptions.cs: Add array size tests.
22187
22188         * mini.c: Allocate a separate icall wrapper for each arity of 
22189         mono_array_new_va. Fixes #59509.
22190
22191         * exceptions.cs: Add testcase for 64578.
22192
22193         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22194
22195         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22196         
22197 2004-09-02  Martin Baulig  <martin@ximian.com>
22198
22199         * mini.c (mono_method_to_ir): When initializing the locals, call
22200         handle_initobj() on the generic instance itself, not its
22201         underlying type.
22202
22203 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22204
22205         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22206         MonoJitInfo for dynamic methods.
22207
22208         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22209
22210         * mini.c: Add support for freeing JIT data for dynamic methods.
22211         
22212 2004-09-01  Martin Baulig  <martin@ximian.com>
22213
22214         * mini-x86.c (is_regsize_var): Added support for generic
22215         instances.
22216         (mono_arch_emit_prolog): Make this compile again, use
22217         `x86_push_imm_template (code)'.
22218
22219 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22220
22221         * mini-x86.c: make all push_imm instructions that get
22222         patched always emit the long form
22223
22224 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22225
22226         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22227         in a per-domain hash.
22228
22229         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22230         types.
22231
22232 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22233
22234         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22235         work.
22236         
22237         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22238         work.
22239
22240         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22241         Beginnings of SSE2 support.
22242
22243         * exceptions.cs: Add more tests for checked int<->uint casts.
22244
22245 2004-08-28  Martin Baulig  <martin@ximian.com>
22246
22247         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22248         generic instances.
22249
22250         * mini.c
22251         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22252         Handle generic instances recursively.
22253
22254 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22255
22256         * iltests.il: test for conv.u8 on a constant
22257
22258 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22259
22260         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22261         LCONV_x4 (shrun_32 (membase)).
22262
22263 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22264
22265         * inssel-x86.brg: c&p rules for push/setret of long
22266
22267 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22268
22269         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22270         compare (regvar, base)
22271
22272         * inssel-x86.brg: more burg love
22273
22274         * inssel.brg: more cleanup
22275
22276         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22277
22278 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22279
22280         * basic-long.cs, basic-calls.cs: new tests for optimization.
22281
22282 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22283
22284         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22285         patch.
22286
22287 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22288
22289         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22290         
22291 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22292
22293         * inssel.brg (mini_emit_memcpy): use 
22294         NO_UNALIGNED_ACCESS to disable memcpy optimization
22295
22296 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22297
22298         * mini-amd64.c: Handle generic types in various places.
22299
22300         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22301
22302 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22303
22304         * mini.c (handle_box): Fix warning.
22305
22306         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22307
22308         * mini-amd64.h: Enable the emit_state optimization.
22309
22310         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22311
22312         * mini-amd64.c: Add some new 64 bit peephole opts.
22313
22314         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22315
22316         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22317
22318         * mini-amd64.c: Register allocator fixes.
22319
22320         * mini.c: Add an optimization to emit_state to avoid allocation of new
22321         registers on some platforms.
22322
22323 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22324
22325         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22326
22327         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22328         allocation. Fixes #63085.
22329
22330         * basic-long.cs: Add new regression test.
22331
22332         * mini-amd64.c: Register allocator improvements.
22333
22334 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22335
22336         * mini-amd64.c (read_tls_offset_from_method): Add another code
22337         sequence.
22338
22339         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22340         instruction sequence for nullifying class init trampolines.
22341
22342         * objects.cs: Add new regalloc test.
22343
22344         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22345
22346 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22347
22348         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22349         
22350         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22351         arguments.
22352
22353         * driver.c: Fix profiling after TLS changes.
22354         
22355         * driver.c (mono_main): Set mono_stats.enabled if needed.
22356
22357         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22358         CEE_BOX.
22359
22360 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22361
22362         * mini-x86.c: use a 1 op rather than a 2 op tls access
22363         instruction -> faster.
22364
22365 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22366
22367         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22368         x86 backend.
22369
22370 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22371
22372         * exceptions-sparc.c (throw_exception): fix typo
22373
22374 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22375
22376         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22377         set tree->dreg correctly with tls. Allow any
22378         register to be used.
22379
22380         * mini-x86.c (read_tls_offset_from_method): add new code
22381         generation pattern seen with GCC.
22382
22383
22384 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22385
22386         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22387         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22388         exceptions-sparc.c: fix some performance issues in exception
22389         handling and setting of the stack trace for exceptions that were
22390         already thrown.
22391
22392 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22393
22394         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22395         x86 backend.
22396         
22397         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22398         registers.
22399
22400 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22401
22402         This patch inlines tls access, when possible.
22403         
22404         * mini.h: new arch functions for TLS intrinsics.
22405         All platforms updated with a stub.
22406
22407         * mini.c: use the new intrinsics
22408
22409         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22410         arch specific intrinsic for tls variables
22411
22412 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22413
22414         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22415         under windows.
22416
22417 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22418
22419         * mini.c: thread local allocation
22420
22421 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22422
22423         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22424
22425         * Makefile.am: Link against the static version of libmonogc.
22426         
22427         * Makefile.am: Link the static versions of the convenience libraries
22428         into the mono executable.
22429
22430         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22431
22432 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22433
22434         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22435         on integer overflow.
22436
22437         * mini-amd64.c: Reorganize function call code.
22438
22439         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22440
22441 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22442
22443         * inssel-x86.brg: use xor eax,eax.
22444         
22445         * basic.cs: new tests
22446
22447 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22448
22449         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22450         in exception throwing code.
22451         
22452 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22453
22454         * inssel-x86.brg: use xor esi,esi.
22455
22456 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22457
22458         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22459         can trace methods compiled during mini_init () too.
22460
22461         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22462         CEE_CONV_U4.
22463
22464 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22465
22466         * Makefile.am: static link on x86 (r=zoltan)
22467
22468 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22469
22470         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22471         code since it causes some programs to fail.
22472
22473 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22474
22475         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22476
22477 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22478
22479         * mini.c: ovfops_op_map - add STACK_OBJ case for
22480         CONV_I 
22481         * basic.cs: add test_0_pin_string as test
22482         case for above.
22483
22484 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22485
22486         * Makefile.am: build C# if srcdir != builddir
22487
22488 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22489
22490         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22491         fall-through blocks.
22492
22493 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22494
22495         * driver.c: enable loop by default again and include abcrem in -O=all.
22496
22497 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22498
22499         * iltests.il: Add some localloc tests.
22500
22501         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22502
22503         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22504         Fixes #62574.
22505
22506         * inssel-amd64.brg: Add some optimizations.
22507
22508         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22509         for gcc-3.4.
22510
22511         * Makefile.am: Statically link mono against libmono on AMD64.
22512         
22513         * mini-amd64.c inssel-amd64.brg: Optimizations.
22514
22515 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22516
22517         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22518
22519         * tramp-amd64.c: Patch calling code in trampolines.
22520
22521 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22522
22523         * mini-amd64.c: pinvoke struct passing fixes.
22524
22525 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22526
22527         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22528         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22529
22530 2004-08-05  Duncan Mak  <duncan@ximian.com>
22531
22532         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22533         CEE_LDELEM_ANY.
22534
22535 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22536
22537         * mini-amd64.c (emit_move_return_value): Move return value for normal
22538         calls too.
22539
22540 2004-08-05  Martin Baulig  <martin@ximian.com>
22541
22542         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22543         `type->type'; just modify `type' itself when dealing with enums
22544         and generic instances.
22545         (check_call_signature): Make `simple_type' a `MonoType *'.
22546
22547 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22548
22549         * mini.c: Use OP_PADD to add offsets to addresses.
22550
22551         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22552
22553 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22554
22555         * mini-sparc.c (mono_arch_emit_epilog): fix check
22556         for folding last op into restore instruction
22557
22558 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22559
22560         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22561         helper methods using the code manager.
22562         
22563         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22564
22565         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22566
22567 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22568         
22569         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22570           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22571
22572         * mini-s390.c: fix tail processing
22573
22574 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22575
22576         * mini-ppc.c: mul.ovf.un exception name fix.
22577
22578 2004-08-03  Martin Baulig  <martin@ximian.com>
22579
22580         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22581         instances; before jumping to `handle_enum', also modify `ptype'.
22582
22583 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22584
22585         * cpu-sparc.md: fcall maximal length too small.
22586
22587 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22588
22589         * mini-amd64.c mini.h: Add initial support for passing/returning 
22590         structures to/from pinvoked methods.
22591
22592 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22593
22594         * mini-ppc.c: reg allocator fix.
22595
22596 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22597
22598         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22599
22600         * inssel.brg: Optimize memset on 64 bit machines.
22601
22602         * mini-amd64.c: Fix some vararg cases.
22603
22604 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22605
22606         * mini-s390.c: Corrected macro in emit_float_to_int
22607
22608         * s390-abi.cs: Tests to exercise the s390 ABI
22609
22610 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22611
22612         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22613         caller saved regs.
22614
22615         * basic.cs: Add a test for add.ovf.un.
22616
22617 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22618
22619         * mini-sparc.c: add case for OP_IDIV_UN
22620
22621 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22622
22623         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22624         
22625         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22626
22627 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22628
22629         * basic.cs: regression tests.
22630
22631         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22632         regressions.
22633
22634 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22635
22636         * basic.cs: Add a new test.
22637
22638         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22639         and AOT. Various fixes and optimizations.
22640
22641         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22642
22643 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22644
22645         * mini-ppc.c: make sure temp regs are not used for global reg
22646         allocation.
22647
22648 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22649
22650         * cpu-sparc.md: conv_i8 fix for 64bits
22651
22652         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22653
22654 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22655         
22656         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22657         add opcode for cmp BYTE PTR [eax], imm.
22658
22659         * inssel.brg: Make memcpy and memset takes bases.
22660
22661 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22662
22663         * *-amd64.*: More AMD64 work.
22664         
22665 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22666
22667         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22668         add a compare-not-equal opcode.
22669         
22670 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22671
22672         * mini.c: Use mono_init_from_assembly instead of mono_init.
22673         
22674 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22675
22676         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22677
22678         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22679
22680         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22681
22682         * inssel.brg: 64 bit fixes.
22683
22684         * mini.h (MonoCallInst): Add some AMD64 specific data.
22685
22686         * mini.h: Add some OP_P opcodes.
22687
22688 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22689
22690         * basic.cs: tests for 61797 and 61740
22691
22692 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22693
22694         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22695         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22696
22697 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22698
22699         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22700
22701         * *-amd64*.*: Ongoing AMD64 work.
22702
22703 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22704
22705         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22706
22707         * *-amd64*: Ongoing AMD64 work.
22708
22709         * mini-arch.h: Add AMD64 support.
22710
22711         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22712
22713         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22714
22715         * mini-ops.h: Add new opcodes.
22716
22717         * Makefile.am: Add AMD64 support.
22718
22719         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22720         rules into the inssel-long*.brg files.
22721
22722         * *-amd64.*: Add beginnings of AMD64 backend.
22723
22724 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22725
22726         * mini.c (print_dfn): commenting out the code that prints
22727         the cil. With -O=deadce, this makes -v -v crash.
22728         
22729         * cpu-pentium.md: make checkthis have a length of 2
22730
22731 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22732
22733         * mini-sparc.h: fix implementations of __builtin
22734         functions for Sun compiler for V9.
22735
22736 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22737
22738         * mini.c: use the new stelem.ref wrapper
22739         * exceptions.cs, arrays.cs: new stelem.ref tests
22740
22741 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22742
22743         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22744         new XSP should work with these changes).
22745
22746 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22747         
22748         * inssel-{long32,x86,}.brg: trivial optimizations.
22749         
22750 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22751
22752         * mini.c: load value when emitting box operation in
22753         constrained calls.
22754
22755 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22756
22757         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22758         is one byte shorter than cmp DWORD PTR [eax], 0.
22759
22760 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22761
22762         * inssel-ppc.brg: arguments on the stack are always
22763         relative to the stack pointer (spotted by Neale Ferguson).
22764
22765 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22766
22767         * exceptions-x86.c: delay appending the method name to the trace until
22768         after mono_jit_info_table_find is called, as this gets the real
22769         MonoMethod.
22770
22771 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22772
22773         * aot.c: register roots
22774
22775 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22776
22777         * aot.c : I could just use PLATFORM_WIN32 flag.
22778
22779 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22780
22781         * aot.c : Reverting the previous fix. This time it broke linux build.
22782
22783 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22784
22785         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22786
22787 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22788
22789         * mini.c (handle_stack_args): Remove some more debugging code.
22790         
22791         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22792
22793         * driver.c mini.h aot.c: Allow additional options to be specified with
22794         --aot and pass them to mono_compile_assembly.
22795
22796         * aot.c: Add experimental code to AOT compile all loaded assemblies
22797         on demand and save the code into a cache in the filesystem.
22798
22799         * aot.c: Add support for more wrapper methods.
22800         
22801         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22802         58863.
22803
22804         * cpu-*.md: Remove removed opcodes.
22805
22806         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22807         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22808         related icalls to marshal.c.
22809
22810 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22811
22812         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22813
22814         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22815
22816         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22817
22818 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22819         * liveness.c: If liveness is recomputated we need to reset the information
22820         for each variable. This way, if the liveness range has been narrowed
22821         by optimizations that happened after the last computation, we can return
22822         a smaller range.
22823         
22824         For example, if you have
22825         
22826         {
22827                 int i = 0;
22828                 
22829                 // Tons of code that does not affect i
22830                 
22831                 i = foo ();
22832                 ...
22833         }
22834         
22835         i = 0 is dead code and will be removed by SSA. However, when
22836         linear scan gets to the code, i will still appear to be live
22837         throughout the entire block. This prevents good register allocation.
22838
22839 2004-07-06  Martin Baulig  <martin@ximian.com>
22840
22841         * debug-mini.c (mono_debug_init_method): Allow
22842         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22843         (mono_debug_add_icall_wrapper): New method.
22844
22845         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22846
22847 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22848
22849         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22850         optimization.
22851
22852 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22853
22854         * aot.c (mono_aot_load_method): Fix loading of debug info.
22855
22856 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22857
22858         * aot.c: Add logging support.
22859
22860 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22861
22862         * mini.h: Add prototype for mono_print_method_from_ip.
22863
22864         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22865
22866         * inssel.brg: 64 bit fixes.
22867
22868         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22869         inssel-long32.brg.
22870
22871         * Makefile.am: Add SPARC64 support.
22872
22873 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22874
22875         * aot.c: Fix alignment problems on 32 bit platforms.
22876
22877 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22878
22879         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22880         SPARC64.
22881
22882         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22883         problems.
22884
22885         * mini.h: Bump AOT file version. Some 64 bit fixes.
22886
22887 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22888
22889         * inssel-sparc.brg: Add new rule to avoid register moves.
22890
22891         * inssel.brg: Add ldind_to_load_membase helper function.
22892
22893 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22894
22895         * mini.c: OffsetToStringData intrinsic.
22896         
22897 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22898
22899         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22900
22901         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22902         regression tests.
22903
22904         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22905 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22906
22907         * mini.c: reinstated mono_compile_get_interface_var()
22908         on x86, too, since the change breaks the Gtk# build there as well.
22909
22910 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22911
22912         * driver.c: remove loop from the default optimizations: it seems to
22913         interact badly with some of the other options (see bug #60613).
22914
22915 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22916
22917         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22918         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22919
22920 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22921
22922         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22923         vararg-using methods.
22924
22925 2004-06-21  Martin Baulig  <martin@ximian.com>
22926
22927         * mini/mini-exceptions.c
22928         (mono_handle_exception): Added `gpointer original_ip' argument.
22929         After calling mono_unhandled_exception(), call
22930         mono_debugger_unhandled_exception() and if that returns true,
22931         restore the context and return.
22932
22933 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22934
22935         * mini-ppc.c: prefer the use of relative branches so
22936         they won't need to be patched in aot code (patch from Patrick Beard).
22937
22938 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22939
22940         * aot.c: patch from Patrick Beard to make the output assembly
22941         more correct for the MacOSX assembler. Small tweak to
22942         generate sane images on Linux/PPC, too.
22943
22944 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22945
22946         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22947         case until bug #59509 is fixed (shows up in #60332).
22948
22949 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22950
22951         * mini.c: make sure the needed wrappers are compiled, too, with
22952         precomp.
22953
22954 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22955
22956         * driver.c: remove NPTL reference in --version output.
22957
22958 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22959
22960         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22961         generate valid assembly for the Mach-O assembler.
22962
22963 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22964
22965         * driver.c: don't include abcrem in the all optimization specifier
22966         since it slows down jit compilation too much for now.
22967
22968 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22969
22970         * mini.c: use BIGMUL only if both operands have the same signage.
22971         * iltests.il: Test for bug 60056. (errors related to signage in
22972         BIGMUL).
22973
22974         r=lupus.
22975
22976 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22977
22978         * mini.c, aot.c: memory leak fixes.
22979
22980 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22981
22982         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22983
22984 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22985
22986         * Makefile.am: remove the -static hack completely, it links in
22987         statically glib as well.
22988
22989 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22990
22991         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22992         * exceptions.cs: make it compile with new mcs/csc.
22993
22994 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22995         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22996         and added relevant test case.
22997
22998 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22999
23000         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
23001         regressions in gtk-sharp.
23002
23003 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
23004
23005         * exceptions.cs: New regression tests.
23006
23007         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
23008
23009 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23010
23011         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
23012
23013 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23014
23015         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
23016
23017         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
23018
23019 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
23020
23021         * mini.c (mono_jit_runtime_invoke): Init class in this
23022         method instead of trusting mono_jit_compile_method to
23023         do the work (because wrappers can be in object class)
23024
23025 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23026
23027         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23028
23029         * basic-long.cs: New regression test.
23030
23031 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23032
23033         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23034         and div/rem checks.
23035
23036 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23037
23038         * Makefile.am: fix miguel's change to build mono statically against
23039         libmono (track build dependencies).
23040
23041 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23042
23043         * cfold.c: Some glib versions do not have G_MININT32.
23044
23045 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23046
23047         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23048         with precision of tan, atan, sin and cos, and implemented related
23049         regressions tests (fixes bug 54467, but one new problem appeared and
23050         is not fixed yet).
23051
23052 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23053
23054         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23055
23056         * exceptions.cs: Add test for constant folding && division by zero.
23057
23058         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23059         since driver.c is in libmono too, so the optimization was useless.
23060
23061         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23062         variable to driver.c so the compiler can emit more efficient code to
23063         access them.
23064
23065 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23066
23067         * Makefile.am: don't distribute generated inssel.[ch] files.
23068
23069 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23070
23071         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23072         into the default appdomain. Fixes #58707.
23073
23074         * jit-icalls.c: Remove the broken approximation for truncl, doing
23075         no conversion is better.
23076
23077         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23078         Fixes #58863.
23079
23080 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23081
23082         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23083         of the mcrxr instruction which is not available on some processors
23084         even if it's documented to be. Implement add and sub overflow correctly
23085         (still not complete for long unsigned). Speed up icalls a bit.
23086
23087 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23088
23089         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23090         we run .cctor in the current domain instead of target_domain.
23091         
23092         Fixes bug #58558, .cctor not being called in -O=shared.
23093
23094 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23095
23096         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23097
23098 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23099
23100         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23101         which can be done with an imm8, do it that way.
23102         (mono_arch_output_basic_block): ditto for a jmp
23103         (mono_arch_emit_prolog): Computate maximum offset of a label.
23104
23105 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23106
23107         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23108         now tries to allocate prefered physical reg's for virtual
23109         regs. This reduces the number of emited spills/loads with
23110         20-30% on our core assemblies.
23111
23112 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23113
23114         * jit-icalls.c: truncl() is not needed and trunc() is
23115         the correct thing to do anyway (bug #58287).
23116
23117 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23118
23119         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23120         if available.
23121
23122 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23123
23124         * driver.c: enable loop optimizations by default.
23125
23126 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23127
23128         * mini-x86.c: fix calc of max loop size when aligning loops start.
23129
23130 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23131
23132         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23133         the stack.
23134
23135 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23136
23137         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23138         should set carry.
23139
23140         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23141
23142         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23143         
23144         * mini.c (inline_method): Allways inline some wrappers even if the cost
23145         is too large. Fixes #58785.
23146
23147         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23148         
23149 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23150
23151         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23152         (crichton@gimp.org). Beginning of support for sparc/linux.
23153
23154         * mini-sparc.c: Optimize retrieval of LMF address.
23155
23156 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23157
23158         * exceptions-ppc.c:  handle alloca in methods with clauses.
23159
23160 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23161
23162         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23163
23164 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23165
23166         * mini.c: Delegate most of the abort signal work to 
23167           mono_thread_request_interruption, which also handles Stop and Suspend
23168           states.
23169
23170 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23171
23172         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23173         supports the save/restore lmf opcodes.
23174
23175 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23176
23177         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23178         by gcc-3.4 as well.
23179
23180         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23181
23182 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23183
23184         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23185         methods which contain array accesses.
23186
23187         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23188         boundaries. Fixes #58537.
23189
23190         * iltests.il: Add regression test for #58537.
23191
23192 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23193
23194         * mini-x86.c (mono_arch_local_regalloc): Last part of
23195         fix for bug #58633 (releasing register to early).
23196
23197 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23198
23199         * basic-long.cs: Add new regression test.
23200
23201 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23202
23203         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23204         register too early on the chain.
23205
23206 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23207
23208         * mini.c (create_helper_signature): Use a helper function to reduce
23209         the code which needs to be written. Also set the calling convention of
23210         icalls on windows. Fixes #57840.
23211
23212 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23213
23214         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23215         exceptions-ppc.c: added helper function to get the instruction address
23216         from a signal handler context.
23217
23218 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23219
23220         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23221         from gonzalo.
23222
23223 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23224
23225         * helpers.c: Add new env variable to pass args to objdump.
23226         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23227
23228 2004-05-17  Radek Doulik  <rodo@ximian.com>
23229
23230         * Makefile.am (common_sources): added abcremoval.h so it get
23231         disted and daily mono packages on go-mono.com will build again
23232
23233 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23234
23235         * abcremoval.c: Fixed coding style, added copyright header.
23236
23237         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23238
23239         * mini.h: Added prototype for abc removal main function.
23240
23241         * build_relations_propagation_table.pl: Added copyright header.
23242
23243 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23244
23245         * basic-long.cs: reg test for complex ceq_long bug.
23246
23247 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23248
23249         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23250         reg in long and clob case (bug #58343). Fixed/added comments.
23251
23252 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23253
23254         * mini.c (mono_jit_runtime_invoke): Follow new convention
23255         of calling the invoke method with an function pointer.
23256
23257 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23258
23259         * ChangeLog: Fix author of memory leak patch.
23260
23261 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23262
23263         * Makefile.am: fix make dist as well...
23264
23265
23266 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23267
23268         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23269         on archs where pointers are 4 bytes long.
23270
23271         * Makefile.am: Added abcremoval.c source file.
23272
23273         * abcremoval.c: Added abcremoval.c.
23274
23275         * abcremoval.h: Added abcremoval.h.
23276
23277         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23278
23279         * inssel.brg: Enabled bounds check removal.
23280
23281         * mini.c: Added support for abcrem optimization.
23282
23283         * mini.h: Added abcrem optimization label.
23284
23285         * driver.c: Added support for abcrem optimization.
23286
23287         * propagated_relations_table.def: Added propagated_relations_table.def.
23288
23289 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23290
23291         * mini.c, cfold.c: fix style.
23292
23293 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23294
23295         * mini.c: handle issue with the low-level implementation of
23296         some long opcodes (bug #54209).
23297
23298 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23299
23300         * basic.cs: test for my new cmov stuff.
23301
23302 2004-05-13      Patrik Torstensson
23303
23304         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23305         opt and added peephole documentation.
23306
23307 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23308
23309         * tramp-ppc.c: rewrote the generic trampoline code.
23310
23311 2004-05-11      Patrik Torstensson
23312
23313         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23314
23315 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23316
23317         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23318
23319         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23320         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23321
23322         * mini.c: Add new icalls for AsAny marshalling.
23323
23324 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23325
23326         * tramp-ppc.c, mini-ppc.c: more cleanups.
23327
23328 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23329
23330         * mini.c: no warnings.
23331
23332 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23333
23334         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23335
23336 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23337
23338         * mini.c: In the thread abort signal handler, if the thread is in the
23339         process of being stoped, don't throw the Abort exception, just stop the
23340         thread.
23341
23342 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23343
23344         * tramp-ppc.c: removed old code.
23345
23346 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23347
23348         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23349         do some simple speed optimizations on ppc.
23350
23351 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23352
23353         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23354         and large offsets in load/store.
23355
23356 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23357
23358         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23359         it causes regressions.
23360
23361 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23362
23363         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23364         support.
23365
23366 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23367
23368         * jit-icalls.c: remove warnings.
23369         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23370         speedups for unsafe code.
23371
23372 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23373
23374         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23375
23376 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23377
23378         * basic-calls.cs: Add new regression test.
23379
23380         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23381         more portable.
23382
23383         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23384
23385         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23386         is no longer used.
23387
23388 2004-05-06      Patrik Torstensson
23389
23390         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23391         long reg allocation in any reg (not only eax:edx) and implemented 
23392         long shl/shr ops in asm instead of helpers.
23393
23394 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23395
23396         * mini-sparc.h: Fix warnings.
23397
23398         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23399         stack.
23400
23401         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23402         separate statement for clarity.
23403
23404         * mini-sparc.c: Update status.
23405
23406 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23407
23408         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23409         here.
23410
23411 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23412
23413         * inssel-ppc.brg: another small pre-release workaround:
23414         we don't do overflow detection for long_sub_un.
23415
23416 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23417
23418         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23419         (also works around a weird ppc bug: 57957).
23420
23421 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23422
23423         * tramp-ppc.c: trampoline fixes.
23424
23425 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23426
23427         * mini-ppc.c: fixed typos.
23428
23429 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23430
23431         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23432         at the top of the stack. Fixed typos. Use a frame registers
23433         for all the methods with exception clauses.
23434
23435 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23436
23437         * exceptions-ppc.c: restore fp registers.
23438
23439 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23440
23441         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23442         order from the stack top (moved the stack room to save the
23443         return value for trace after the param area). Fixed corruption
23444         in restoring registers on unwind.
23445
23446 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23447
23448         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23449
23450 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23451
23452         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23453         and prolog/epilog for methods that use it. Allow
23454         enough param area room for varargs methods. Fix miguel's
23455         breakage in exception handling.
23456
23457 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23458
23459         * Makefile.am: run genmdesc only on current arch.
23460
23461 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23462
23463         * exceptions-x86.c:
23464         * mini-x86.h: fix the build on windows.
23465
23466 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23467
23468         * 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.
23469
23470         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23471
23472         * mini-exceptions.c: New file.
23473         
23474         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23475         Move some parts of the x86 exception handling code to an 
23476         arch-independent file so it can be shared with other ports.
23477
23478 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23479
23480         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23481
23482 2004-04-26  David Waite  <mass@akuma.org>
23483
23484         * driver.c: remove comma from end of enumeration declaration
23485
23486 2004-04-26  Jackson Harper  <jackson@ximian.com>
23487
23488         * driver.c: parse config file before loading first assembly. This
23489         allows the user gac to be enabled/disabled. 
23490         
23491 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23492
23493         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23494         simpler mechanism: we do not care what is encoded initially
23495         (branch absolute or relative), we care about the code and its
23496         target.  I kept the old code for reference for now.
23497
23498         The new code tries first to determine if the jump is anywhere in
23499         the -/+32 absolute meg range, if it succeeds, it encodes using the
23500         absolute branch;  If not, it tried to find something in the
23501         relative range, if not, it uses the handle_thunk code. 
23502
23503 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23504
23505         * exceptions-ppc.c: use the correct ip register on macosx.
23506
23507 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23508
23509         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23510
23511 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23512
23513         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23514         Raise exception on integer divide by zero by hand since the hw
23515         doesn't support it. Handle NaNs in FP compares.
23516
23517 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23518
23519         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23520         code reducing duplication between the platforms and enabled
23521         signal exception handling (on linux for now).
23522
23523 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23524
23525         * exceptions-ppc.c: more macosx support.
23526
23527 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23528
23529         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23530
23531 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23532
23533         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23534
23535 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23536
23537         * iltests.il: more tests.
23538
23539 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23540
23541         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23542         vars as well.
23543
23544 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23545
23546         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23547
23548 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23549
23550         * liveness.c: Mark variables as volatile in all basic blocks reachable
23551         from exception clauses.
23552
23553 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23554
23555         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23556         inlining.
23557
23558 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23559
23560         * iltests.il, basic.cs: more tests for regalloc.
23561
23562 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23563
23564         * iltests.il: Some tests for register allocation modifications
23565         I have locally.
23566
23567 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23568
23569         * exceptions.cs: Add regression test for bug #56782.
23570
23571         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23572         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23573         the beauty of fixing the same thing in 5 different files...
23574
23575 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23576
23577         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23578         methods.
23579
23580 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23581
23582         * mini.c: Add support for STRWLPARRAY marshalling convention.
23583
23584 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23585
23586         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23587         to init the context to setup the regs pointer).
23588
23589 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23590
23591         * exceptions-ppc.c: more exceptions work.
23592
23593 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23594
23595         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23596         not allowed.
23597
23598 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23599
23600         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23601         can use the memory directly.
23602
23603         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23604
23605         add x86_add_membase, x86_sub_membase, x86_mul_membase
23606
23607 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23608
23609         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23610         GENERAL_REGS they were also hardcoded for all PPC ports.
23611
23612         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23613
23614         Remove hard-coded limit for floating point registers, use
23615         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23616
23617         Notice that in MacOS X calling conventions you can fit a lot more
23618         floating point values in registers, so I should update the PInvoke
23619         test to excercise the passing of floating point values on the
23620         stack (currently broken).
23621         
23622 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23623
23624         * tramp-ppc.c (create_trampoline_code): Added
23625         JUMP_TRAMPOLINE_SIZE. 
23626         (ppc_magic_trampoline): Follow the pattern from
23627         x86_magic_trampoline: if code is set to zero, return. 
23628         (create_trampoline_code): Always pass MonoMethod to the jump
23629         trampoline, before it was passing a null.
23630         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23631         share the code with mono_arch_create_jit_trampoline. 
23632
23633         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23634         implemented.
23635         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23636         implemented.  
23637
23638         * cpu-g4.md: Added length for jmp instruction, the worst case
23639         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23640         for save_lmf).
23641
23642 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23643
23644         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23645
23646 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23647
23648         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23649         before each IL instruction.
23650
23651         * mini.c (CEE_BOX): Fix warnings.
23652
23653 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23654
23655         * mini.c: removed a few unused vars and extra whitespace.
23656
23657 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23658
23659         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23660         checks.
23661         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23662         index.
23663         (OP_GETCHR): use the above
23664         (CEE_LDELEMA): use the above.
23665
23666         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23667         version of the generic impl.
23668         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23669         (CEE_LDELEMA): use the above.
23670
23671 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23672
23673         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23674         Fixes #56317.
23675
23676         * iltests.il: Added new regression test for #56317.
23677
23678 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23679
23680         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23681         under NetBSD. Fixes #56450.
23682
23683         * liveness.c (update_gen_kill_set): Fix previous patch.
23684
23685 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23686
23687         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23688
23689 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23690
23691         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23692         ldsfld and ldsflda.
23693
23694         * inssel-sparc.brg: Add more optimizations.
23695
23696         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23697
23698 2004-04-01  Martin Baulig  <martin@ximian.com>
23699
23700         * mini.c (handle_box): New static function; moved the
23701         implementation of CEE_BOX here.
23702         (mono_method_to_ir): Added `constrained_call' variable.
23703         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23704         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23705         mono_method_get_constrained() to get the method.
23706
23707 2004-04-01  Martin Baulig  <martin@ximian.com>
23708
23709         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23710         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23711         (mono_method_to_ir): We don't need these macros anymore since
23712         mono_class_get_full() already takes care of it. 
23713
23714 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23715
23716         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23717         use @function (as doesn't accept #function here) and check the return
23718         value of system and stop if fails.
23719
23720 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23721
23722         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23723
23724 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23725
23726         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23727
23728         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23729
23730         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23731         #56223.
23732
23733         * basic-long.cs: Add test for negation of Int64.MinValue.
23734
23735 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23736
23737         * mini-sparc.c: Update status.
23738
23739         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23740
23741         * exceptions-sparc.c: Fix return value in filters.
23742
23743         * inssel-sparc.brg: Fix register allocation in some rules.
23744
23745 2004-03-28  Martin Baulig  <martin@ximian.com>
23746
23747         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23748         if neccessary.  
23749
23750 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23751
23752         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23753         
23754         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23755         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23756         remove unused conv_u4 opcode.
23757
23758         * mini-x86.c: Remove valgrind workaround since it slows down things
23759         even when mono is not run under valgrind.
23760
23761 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23762
23763         * mini-sparc.c: Update status.
23764
23765         * inssel-sparc.brg: Add some optimizations.
23766
23767         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23768         future delay slot filling. Add support for varargs, tail calls and JMP.
23769
23770         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23771         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23772
23773         * inssel.brg: Fix register allocation in OP_ARGLIST.
23774
23775         * inssel.brg: Fix warnings.
23776
23777 2004-03-25  Martin Baulig  <martin@ximian.com>
23778
23779         * mini.c (inflate_generic_field): Removed.
23780         (mini_get_method): Removed, use mono_get_method_full(),
23781         (mini_get_class): Removed, use mono_class_get_full().
23782         (mono_method_to_ir): Pass our generic context to
23783         mono_field_from_token().        
23784
23785 2004-03-25  Martin Baulig  <martin@ximian.com>
23786
23787         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23788         of a `MonoMethod *'.
23789         (mini_get_method): Take a `MonoGenericContext *' instead
23790         of a `MonoMethod *'.
23791         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23792         a new local variable called `generic_context' which holds the
23793         current `MonoGenericContext *'; use it to lookup things.
23794
23795 2004-03-24  Martin Baulig  <martin@ximian.com>
23796
23797         * mini.c (mini_get_class): New static method; if we're inside a
23798         generic instance, inflate the class if neccessary.
23799         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23800
23801 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23802
23803         * iltests.il: New regression test for #55976.
23804
23805         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23806         #55976.
23807
23808 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23809
23810         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23811         output.
23812
23813 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23814
23815         * liveness.c: Consider SSA stores as well as loads when making vars
23816         volatile.
23817
23818         * exceptions.cs: New regression tests for register allocation.
23819         
23820 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23821
23822         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23823         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23824           domain lock only to protect puntual access to data structures.
23825           Added access lock for sighash, jit_icall_hash_name, 
23826           jit_icall_hash_addr and domain->code_mp.
23827
23828 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23829
23830         * driver.c: Print SIGSEGV handling method.
23831
23832         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23833
23834         * mini.c (setup_jit_tls_data): Handle case when this is called
23835         multiple times for a thread.
23836
23837         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23838         is different from fbxx_un. Fixes #54303. Also use constants instead of
23839         magic numbers in a lot of places.
23840
23841 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23842
23843         * exceptions.cs: Fix cctor test when --regression is used.
23844
23845 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23846
23847         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23848         for Linux/ppc.
23849
23850 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23851
23852         * inssel-ppc.brg: fixed register assignments for some rules.
23853
23854 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23855
23856         * exceptions.cs: Add test for exceptions in static constructors.
23857
23858         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23859         static constructors outside the domain lock. Fixes #55720.
23860
23861 2004-03-17  Martin Baulig  <martin@ximian.com>
23862
23863         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23864         (inflate_generic_field): Take the `MonoMethod *' instead of the
23865         `MonoClass *' and added support for generic method.
23866         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23867         have a `field->parent->gen_params', only inflate the field if it's
23868         an open constructed type.
23869
23870 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23871
23872         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23873         exception object instead of the preconstructed ones.
23874
23875 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23876
23877         * mini.c: reverted changed to sigsegv_signal_handler commited
23878         accidentally in the previous patch.
23879
23880 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23881
23882         * mini.c:
23883         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23884         running --aot with an old assembly.
23885
23886 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23889         point values.
23890
23891         * mini-sparc.c: Add support for v9 branches with prediction.
23892
23893 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23894
23895         * mini.c (mini_init): #warning is GNUC only
23896
23897         * mini-sparc.h: implement __builtin_frame_address
23898         and __builtin_return_address for Sun C compiler
23899
23900 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23901
23902         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23903
23904 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23905
23906         * basic-calls.cs: Add test for unaligned byref long argument passing.
23907
23908         * mini-ops.h: Add sparcv9 compare and branch instructions.
23909
23910         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23911         v9 instructions if we have a v9 cpu.
23912
23913         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23914         registers for global allocation.
23915
23916         * exceptions-sparc.c: Fixes.
23917         
23918 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23919
23920         * liveness.c (mono_analyze_liveness): Optimized version.
23921
23922         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23923
23924         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23925         sparc work.
23926
23927         * basic-float.cs basic-calls.cs: New regression tests.
23928
23929 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23930
23931         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23932         sigaltstack implementation.
23933
23934         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23935         
23936         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23937         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23938
23939 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23940
23941         * mini.c: Fix warnings.
23942         
23943         * mini.c (mono_resolve_patch_target): New function which contains the
23944         arch independent part of the patching process.
23945
23946         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23947         patching code to a separate function.
23948
23949 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23950
23951         * mini.c (add_signal_handler): ifdef out on Windows
23952
23953 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23954
23955         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23956         cpu-sparc.md: Add exception handling support + other fixes.
23957
23958         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23959         typed GC detection in --version.
23960
23961         * basic.cs exceptions.cs: New regression tests.
23962
23963         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23964         the arch specific code can store data during a compilation.
23965
23966         * mini-ops.h: Add OP_SETFRET.
23967
23968         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23969         function, register a separate icall for each arity, so the icalls can
23970         get a wrapper.
23971         
23972         * mini.c (mono_print_tree): Print negative offsets in a more readable
23973         form.
23974         
23975         * mini.c: Make signal handling work on sparc.
23976         
23977         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23978
23979         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23980
23981         * jit-icalls.c: Emulate truncl by aintl on solaris.
23982
23983         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23984
23985 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23986
23987         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23988
23989 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23990
23991         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23992         a MarshalByRef type, inline a method that performs the check, taking into
23993         account that the object can be a proxy. Also implemented tow new opcodes:
23994         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23995         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23996         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23997
23998 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23999
24000         * mini-ppc.c: if a relative branch displacement is too big
24001         but it points to and area reachable with an absolute branch, 
24002         avoid the thunks.
24003
24004 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
24005
24006         * mini.c: optimize small copies in cpblk.
24007
24008 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
24009
24010         * basic-calls.cs basic-float.cs: New regression tests.
24011
24012         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
24013         negative offsets from %fp. Implement localloc. Fix local register 
24014         allocation. Fix the case when the this argument needs to be saved to
24015         the stack. Implement some missing opcodes.
24016
24017 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24018
24019         * mini.c (mini_method_compile): Reenable global regalloc in methods
24020         with exception handlers.
24021
24022         * linear-scan.c (mono_varlist_sort): Fix warning.
24023
24024         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24025
24026         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24027         regalloc costs.
24028
24029         * liveness.c: Make all variables uses in exception clauses volatile, to
24030         prevent them from being allocated to registers. Fixes #42136.
24031
24032 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24033
24034         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24035         causes regressions.
24036
24037         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24038         argument to mono_arch_regalloc_cost.
24039
24040         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24041         precisely.
24042
24043 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24044
24045         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24046         Make the cost of allocating a variable to a register arch dependent.
24047
24048         * basic-calls.cs: Fix compilation of tests.
24049         
24050         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24051         helper function to cut back on the number of #ifdefs needed.
24052
24053         * mini-ppc.c: Fix compilation.
24054
24055         * basic-calls.cs: New regression tests.
24056
24057         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24058
24059         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24060         of l0 since that is callee saved.
24061
24062         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24063         to virtual calls.
24064
24065         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24066         of delay instruction.
24067
24068         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24069
24070         * mini.h (MonoCallInst): Add 'virtual' flag.
24071
24072         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24073
24074 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24075
24076         * *.cs: New regression tests.
24077
24078         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24079         work.
24080
24081         * mini.c (mono_runtime_install_handlers): Fix build.
24082
24083         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24084         'signal_stack_size' members.
24085
24086         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24087         alternate signal stack.
24088
24089         * exceptions-x86.c: Add stack overflow handling.
24090
24091         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24092         functions to arch independent code.
24093
24094         * mini.c (mono_print_tree): Print more detailed info for load_membase
24095         opcodes.
24096         
24097 2004-02-23  Martin Baulig  <martin@ximian.com>
24098
24099         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24100
24101 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24102
24103         * mini-x86.c: fixed reg allocation for div/rem.
24104
24105 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24106
24107         * driver.c (mono_main): Report some configuratio options on --version.
24108
24109 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24110
24111         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24112         low in the address space. Correctly flush memory in thunks where we
24113         output native code.
24114
24115 2004-02-20  Martin Baulig  <martin@ximian.com>
24116
24117         * mini.c (mini_get_method): New static method; inflate all generic
24118         methods and methods in open generic instances.
24119         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24120         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24121
24122 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24123
24124         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24125
24126         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24127
24128 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24129
24130         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24131
24132         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24133         it compile using Sun's compiler.
24134
24135 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24136
24137         * 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.
24138
24139         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24140
24141 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24142
24143         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24144         code.
24145         * mini-ppc.c: handle calls outside of the allowed range with thunks
24146         allocated using the code manager.
24147         * tramp-ppc.c: use the code manager to hold generated native code.
24148         Fixed the magic trampoline to just patch vtable entries.
24149
24150 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24151
24152         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24153         independent file.
24154
24155 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24156
24157         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24158         PPC.
24159
24160         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24161         if we have a working __thread implementation.
24162
24163         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24164         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24165
24166 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24167
24168         * mini-x86.c: Fix compilation under gcc 2.
24169         
24170 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24171
24172         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24173         contains a call to the wrapped function.
24174
24175         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24176         OP_<CALL>_IMM opcodes, and use them under X86.
24177         
24178         * mini.c (mono_jit_find_compiled_method): Fix warning.
24179
24180         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24181
24182         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24183
24184         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24185         functionality to mini.c.
24186
24187         * mini.c (mono_create_jump_trampoline): New function to create a jump
24188         trampoline. Return a compiled method instead of a trampoline if it
24189         exists. Add a cache for jump trampolines.
24190
24191         * mini.c (mono_jit_find_compiled_method): New function to return a
24192         compiled method if it exists.
24193
24194         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24195         mono_arch_create_jit_trampoline.
24196
24197         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24198         a jump trampoline. Fixes #52092.
24199         
24200 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24201
24202         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24203         which is not up-to-date. Add check_corlib_version () instead.
24204
24205         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24206         have to call it.
24207         
24208         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24209         since newer valgrind versions do not need it.
24210
24211         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24212         compile a method with a given set of optimizations.
24213
24214         * mini.c: Compile icall wrappers on-demand instead of at startup.
24215
24216         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24217         wrapper for an icall.
24218
24219 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24220
24221         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24222         #54063.
24223
24224         * iltests.il: Add test for non-empty stack before switch instruction.
24225
24226 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24227
24228         * mini.c: Add support for new stringbuilder marshalling conventions.
24229
24230         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24231
24232 2004-02-01  Martin Baulig  <martin@ximian.com>
24233
24234         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24235         in `ginst->mtype_argv'.
24236
24237 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24238
24239         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24240         facilitate grepping.
24241
24242 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24243
24244         * mini.c: fixed buglet in initobj generic implementation for references.
24245
24246 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24247
24248         * Makefile.am: make the version script conditional.
24249         * jit-icalls.c: handle missing truncl().
24250
24251 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24252
24253         * exceptions.cs: Add more tests for double->int conversion.
24254
24255         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24256         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24257
24258 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24259
24260         * driver.c: make --verbose --version emit an error
24261         if the loaded corlib doesn't match the runtime version.
24262
24263 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24264
24265         * mini-ppc.h: export ppc_patch().
24266         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24267         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24268         on par or better than on MacOSX.
24269
24270 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24271
24272         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24273         mono_lookup_pinvoke_call.
24274
24275         * mini-x86.c: Under windows, the default pinvoke calling convention is
24276         stdcall. Fixes #52834.
24277
24278         * mini.c (optimize_branches): Add an upper bound to the number of
24279         iterations to prevent infinite loops on strange loops. Fixes #53003.
24280
24281 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24282
24283         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24284         and ISINST. Fixes #52093.
24285
24286         * objects.cs (test_0_vector_array_cast): New tests.
24287         
24288 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24289
24290         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24291         checking in Array.Set ().
24292
24293         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24294         #52590.
24295
24296         * object.cs (test_0_multi_array_cast): New regression test.
24297
24298 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24299
24300         * exceptions-ppc.c: fix build on Linux/PPC.
24301
24302 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24303
24304         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24305         running under valgrind.
24306         (x86_magic_trampoline): Fix build bustage.
24307
24308         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24309         negative values as well. This is needed for the encoding of the line number
24310         info, since sometimes the line numbers are not in increasing order.
24311
24312 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24313
24314         * cpu-pentium.md (localloc): Increase the size of the localloc 
24315         instruction since it is a loop under Win32.
24316
24317         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24318         allocation.
24319
24320 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24321
24322         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24323         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24324         Max Horn (max@quendi.de). Fix file names in comments.
24325
24326 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24327
24328         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24329         avoid stack overflow.
24330         (replace_usage): Avoid uninitialized variable warnings.
24331
24332         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24333         and taking the address of valuetype variables.
24334
24335 2004-01-03  Patrik Torstensson
24336
24337         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24338         for other purposes than FP later on.
24339
24340 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24341
24342         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24343         of tail calls.
24344
24345 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24346
24347         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24348
24349 2003-12-30  Patrik Torstensson <p@rxc.se>
24350
24351         * mini-x86.h: Decreased number of availiable fp regs.
24352         Solves corner cases with FP spilling.
24353
24354 2003-12-23  Patrik Torstensson <p@rxc.se>
24355
24356         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24357         for floating point stack tracking / spilling on x86. 
24358         Fixes bug #49012.
24359         
24360         * basic-float.cs: added float mul overflow test.
24361
24362 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24363
24364         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24365
24366 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24367
24368         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24369         supports for cond branches that overflow the immediate
24370         overflow offset. mcs can compile simple programs.
24371
24372 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24373
24374         * exceptions-ppc.c: exception handling support wip:
24375         finally handlers get run on exception.
24376
24377 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24378
24379         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24380         profiling.
24381
24382 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24383
24384         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24385         initial support for stack walking and unwinding.
24386
24387 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24388
24389         * driver.c (mono_main): Make corlib-out-of-sync message more 
24390         descriptive. Also remove verify_corlib call.
24391
24392 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24393
24394         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24395         not overlap with other call's arguments, too.
24396
24397 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24398
24399         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24400         move to arch-specific code the choice of arch-specific
24401         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24402         * mini.c: ensure emulation calls will not interleave
24403         with other calls.
24404
24405 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24406
24407         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24408         the magic trampoline stack frame is dropped before executing
24409         the new method.
24410
24411 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24412
24413         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24414         and integer to fp conversions. Added support for overflowing
24415         arguments on the stack. Reserve a couple more registers as temps.
24416         Added support for aot compilation (as output still needs to be
24417         tweaked, though).
24418
24419 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24420
24421         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24422         Don't overwrite return register in some corner cases.
24423
24424 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24425
24426         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24427         static constructors when AOT compiling.
24428
24429         * driver.c (mono_main): Call mono_check_corlib_version.
24430
24431 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24432
24433         * cpu-g4.md, basic.cs: fixed div target register.
24434
24435 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24436
24437         * mini-ppc.c, basic.cs: shl_imm fix with test.
24438
24439 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24440
24441         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24442         structures by value. Misc fixes.
24443         * objects.cs: more tests.
24444
24445 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24446
24447         * mini-ppc.c: lconv.ovf.i implemented.
24448
24449 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24450
24451         * mini.c:
24452         (mini_init): don't error out if someone already called g_thread_init.
24453
24454 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24455
24456         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24457         to be any type per the spec. Fix abnormal memory usage when
24458         the same object is repeatedly thrown.
24459
24460 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24461
24462         * mini.c: check for overruns in IL code.
24463
24464 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24465
24466         * TODO: Add/remove some todo entries.
24467
24468 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24469
24470         * driver.c (mono_main): Call mono_verify_corlib.
24471
24472 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24473
24474         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24475         This has been moved to mini.c
24476         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24477         type being casted is marshalbyref it could be a proxy, so instead of
24478         emitting the type check code, emit a call to a runtime method that will
24479         perform the check by calling CanCastTo if needed.
24480
24481 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24482
24483         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24484         methods with large stack frames under Win32.
24485
24486 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24487
24488         * Makefile.am: Distribute regression tests.
24489
24490         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24491         at the end instead of inserting each variable into the sorted list.
24492
24493         * linear-scan.c (mono_varlist_sort): New helper function.
24494         
24495 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24496
24497         * mini.c: ensure arguments and locals are within bounds.
24498
24499 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24500
24501         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24502         related fixes.
24503
24504 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24505
24506         * mini.c (mono_cprop_copy_values): Fix crash.
24507
24508         * aot.c: Set verbosity back to 0.
24509         
24510 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24511
24512         * regalloc.c: complete memory leak fix by Laurent Morichetti
24513         (l_m@pacbell.net).
24514
24515 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24516
24517         * driver.c (main_thread_handler): Revert the previous patch.
24518
24519         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24520         under valgrind.
24521
24522         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24523         memory from the memory pool.
24524
24525         * driver.c (main_thread_handler): Turn on all optimizations when
24526         --aot is used.
24527
24528         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24529         an array for better performance.
24530
24531         * regalloc.c (mono_regstate_assign): Fix memory leak.
24532
24533         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24534         serialize the debug info.
24535
24536         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24537         debug info from the serialized representation.
24538
24539         * aot.c: Save debug info into the generated file and load it when 
24540         loading a method.
24541
24542         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24543
24544 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24545
24546         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24547         More FP-related fixes.
24548
24549 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24550
24551         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24552         and register allocation buglet. Hello world now runs.
24553
24554 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24555
24556         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24557         * tramp-ppc.c: fixed class init trampoline.
24558         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24559
24560 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24561
24562         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24563         mini.c: more ppc changes/fixes.
24564
24565 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24566
24567         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24568         Also optimize the case when the arguments are the same in the caller 
24569         and in the callee.
24570
24571         * iltests.il: Add tests for tail calls with valuetype arguments.
24572
24573 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24574
24575         * mini-ppc.c: fixes for struct return type.
24576
24577 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24578
24579         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24580         mono_spillvar_offset() to arch-specific code.
24581
24582 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24583
24584         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24585
24586 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24587
24588         * exceptions-x86.c: Fix stack space leaks.
24589         
24590         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24591         registers from the lmf if the method has save_lmf set.
24592
24593 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24594
24595         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24596         of icall wrappers into InvokeInDomain, since these are now per-domain.
24597
24598 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24599
24600         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24601         make some opcode emulation and intrinsic ops enabled/disabled 
24602         according to the architecture. More fixes.
24603
24604 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24605
24606         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24607
24608 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24609
24610         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24611         arch-specific handling for 'this' and struct return type to
24612         arch-specific code.
24613
24614 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24615
24616         * aot.c: prevent divide by zero error when reporting (it happened with
24617         Accessibility.dll).
24618
24619 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24620
24621         * mini.h (inst_switch): Remove unused macro.
24622
24623 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24624
24625         * aot.c:
24626         (load_aot_module): free 'info->methods' and 'info' properly. No more
24627         "free(): invalid pointer blah" messages when you have an old aot
24628         compiled assembly.
24629
24630 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24631
24632         * jit-icalls.c, mini.c: Added support for context static fields.
24633
24634 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24635
24636         * mini.c (mono_method_blittable): Methods which set LastError are not 
24637         blittable either. Fixes #51108.
24638         
24639 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24640
24641         * mini.c: flush icache.
24642         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24643
24644 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24645
24646         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24647
24648 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24649
24650         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24651         safe on IA32.
24652
24653         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24654         vararg calls.
24655
24656         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24657
24658 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24659
24660         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24661         instruction when the result is discarded.
24662
24663         * iltests.il (test_0_div_regalloc): New regression test.
24664
24665         * arrays.cs: Fix compilation error.
24666
24667 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24668
24669         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24670         float rules to inssel-x86.brg: sane architectures with FP registers
24671         don't need to implement these rules.
24672
24673 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24674
24675         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24676
24677 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24678
24679         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24680         implementation of 32 bit systems.
24681
24682 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24683
24684         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24685         (Jeroen Zwartepoorte).
24686
24687 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24688
24689         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24690         the caller and the callee matches.
24691         
24692         * mini.c (mono_method_to_ir): Add comment.
24693
24694         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24695         signbit is missing on some platforms.
24696
24697 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24698
24699         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24700
24701         * mini.c (setup_jit_tls_data): Call the new function.
24702         
24703         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24704
24705         * mini-x86.c: Add experimental support for fast access to the lmf
24706         structure under NPTL/Linux 2.6.x.
24707
24708 2003-11-06  Martin Baulig  <martin@ximian.com>
24709
24710         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24711         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24712         the debugger.
24713
24714 2003-11-02  Martin Baulig  <martin@ximian.com>
24715
24716         * mini.c (inflate_generic_field): New static method.
24717         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24718         generic instance and the field is declared in a generic type, call
24719         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24720
24721 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24722
24723         * mini.h mini.c (mono_method_same_domain): New function to return
24724         whenever the caller and the callee are in the same domain.
24725
24726         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24727
24728 2003-10-30  Martin Baulig  <martin@ximian.com>
24729
24730         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24731         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24732         method parameters.
24733         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24734         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24735
24736 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24737
24738         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24739         propagation.
24740
24741         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24742         object here, so it is in the correct appdomain etc.
24743
24744 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24745
24746         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24747         already done.
24748         (mono_method_to_ir): Avoid freeing the type created returned from
24749         mono_type_create_from_typespec, since it is put into an internal cache
24750         by the function. Fixes pointer.exe.
24751
24752         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24753         trampolines for icalls and pinvokes as well. Fixes #33569.
24754
24755 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24756
24757         * mini.c: Update after appdomain changes.
24758
24759         * mini.c (mono_jit_compile_method_inner): Allways compile native
24760         method wrappers in the root domain, since there can only be one
24761         instance of them, whose address is stored in method->info.
24762
24763 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24764
24765         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24766         environment variable. Instead detect automatically whenever running
24767         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24768         valgrind.h.
24769
24770 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24771
24772         * trace.c, trace.h: New files that implement the new trace option
24773         parsing. 
24774
24775         * driver.c: Document new --trace options.
24776
24777         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24778         mini-x86.c: Apply:
24779
24780         -       if (mono_jit_trace_calls)
24781         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24782
24783         * mini.h: prototypes.
24784         
24785 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24786
24787         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24788
24789         * mini.c inssel.brg: Implement typedefbyref opcodes.
24790
24791         * mini.c (mono_jit_compile_method): Remove unused local variable.
24792
24793         * mini.c (mono_jit_compile_method_inner): Ditto.
24794         
24795 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24796
24797         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24798         
24799         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24800
24801 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24802
24803         * mini.c (mono_no_aot): Remove unused global variable.
24804
24805         * mini.c: Thread safety fixes.
24806
24807 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24808
24809         * mini.c (mono_create_class_init_trampoline): Add a lock around
24810         class_init_hash_addr.
24811
24812         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24813         #30073.
24814
24815         * mini.c: Decompose the NEWARR instruction before decomposing its
24816         arguments. Fixes #30073.
24817
24818 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24819
24820         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24821         convention.
24822
24823 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24824
24825         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24826
24827         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24828
24829         * driver.c: Add support for compiling icall wrappers to --compile.
24830
24831 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24832
24833         * inssel.brg: The empty value in class->interface_offsets is -1, not
24834         0. Fixes #49287.
24835
24836 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24837
24838         * objects.cs: New test for 'is' operator on an array of interfaces.
24839
24840 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24841
24842         * tramp-ppc.c: update trampoline code to support jumps
24843         and class initialization.
24844
24845 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24846
24847         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24848
24849         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24850
24851         * inssel.brg (OP_UNBOX): Remove unused rule.
24852
24853         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24854         region instead of one for each method. Fixes #47813.
24855
24856 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24857
24858         * exceptions.cs (test_0_nested_finally): New regression test for
24859         nested exception handlers.
24860
24861         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24862
24863         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24864
24865         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24866         inlining.
24867
24868         * mini.c (mono_method_check_inlining): Make the inlining limit 
24869         configurable by an environment variable.
24870         
24871         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24872
24873         * mini.h: Bump AOT file version.
24874
24875         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24876         token, store the image along with the token, since the token might not 
24877         refer to the same image as the method containing the relocation, 
24878         because of inlining.
24879
24880 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24881
24882         * mini.c (mono_precompile_assemblies): New function to compile
24883         all methods in all loaded assemblies.
24884
24885         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24886
24887         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24888         iassign and fassign to int*, since they can contain large negative
24889         values if the register is spilled. Also added some comments. Fixes
24890         #45817.
24891
24892         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24893         under Win32. Fixes #42964.
24894
24895 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24896
24897         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24898
24899         * aot.c: Added support for AOT compiling methods which contain calls
24900         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24901         handled.
24902         
24903         * driver.c (compile_all_methods): Run the compilation in a thread
24904         managed by mono. Fixes #44023.
24905
24906         * mini.c (mono_codegen): Print full method name in verbose output.
24907
24908         * mini-x86.c (mono_arch_patch_code): Fix warning.
24909         
24910         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24911         jumps, since the method we are jumping to might be domain-specific.
24912
24913         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24914
24915 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24916
24917         * inssel.brg: string chars are unsigned.
24918
24919 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24920
24921         * TODO: New todo item.
24922
24923         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24924         which calls mono_runtime_class_init and patches the call site to
24925         avoid further calls.
24926         (mono_arch_create_class_init_trampoline): New arch specific function 
24927         to create a class init trampoline.
24928         (create_trampoline_code): Generalized so it can create
24929         class init trampolines as well.
24930
24931         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24932         (mono_create_class_init_trampoline): New function to create and cache
24933         class init trampolines.
24934         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24935         vtable given the address of a class init trampoline. Used by the
24936         patching process.
24937         (mono_codegen): Generate a call to a trampoline instead of
24938         mono_runtime_class_init in LDSFLD[A].
24939         (mono_codegen): Add relocations for the new trampoline.
24940         
24941         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24942         MONO_PATCH_INFO_CLASS_INIT.
24943
24944         * mini.h: Bump AOT version number.
24945
24946         * aot.c: Create a copy of the loaded code instead of using the original
24947         so methods which call each other will be close in memory, improving
24948         cache behaviour.
24949         
24950         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24951         patch since it breaks the regression tests.
24952         
24953         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24954         for the register saving instruction sequence since the 
24955         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24956
24957 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24958
24959         * TODO: Fix todo item && remove another.
24960
24961 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24962
24963         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24964         previous checkin.
24965
24966         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24967         function of the module.
24968
24969         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24970         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24971         --no-aot command line option.
24972
24973 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24974
24975         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24976         by Bernie Solomon (bernard@ugsolutions.com).
24977
24978         * inssel.brg: Refactor the interface offset table related code into
24979         its separate functions and add support for the AOT case.
24980
24981 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24982
24983         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24984         
24985         * aot.c: Added mono_aot_verbose variable and made all debugging
24986         output depend on the value of this variable.
24987
24988         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24989         method_label and info_label.
24990
24991         * mini.h mini-x86.c aot.c: Added a new relocation type 
24992         MONO_PATCH_INFO_IID for klass->interface_id.
24993
24994         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24995         the MonoJitInfo structure.
24996
24997         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24998         a non-root appdomain in shared mode.
24999
25000 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25001
25002         * aot.c: make aot loader less verbose. Remove free of unused variable.
25003
25004 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25005
25006         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
25007
25008         * .cvsignore: Added *.dll.
25009
25010         * mini.c (mono_print_tree_nl): New function callable while debugging.
25011
25012         * mini.c (mono_print_code): Export this.
25013
25014         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
25015         patched code.
25016
25017 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
25018
25019         * mini.h (MonoCompile): Added 'jit_info' field.
25020
25021         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
25022         the cfg structure, since it is needed by the AOT compiler.
25023
25024         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25025
25026         * aot.c: A major rewrite. Changes include:
25027         - save exception tables for methods which have them.
25028         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25029         to g_module_symbol.
25030         - reworked the file format so it is now much smaller and needs
25031         fewer relocation entries.
25032         
25033 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25034
25035         * aot.c (load_aot_module): Fix build bustage on platforms without
25036         Boehm GC.
25037
25038 2003-09-04  Martin Baulig  <martin@ximian.com>
25039
25040         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25041
25042 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25043
25044         * TODO: Some new optimization ideas.
25045
25046         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25047
25048         * aot.c: Save the optimization flags used to compile the code into
25049         the AOT module.
25050
25051         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25052         support emitting domain specific code.
25053         
25054         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25055         no longer domain neutral. It can be made domain neutral by compiling 
25056         with --optimize=shared.
25057
25058         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25059         between appdomains.
25060
25061         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25062         loading of AOT code.
25063
25064         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25065         
25066         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25067         if there is no domain neutrality information.
25068
25069 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25070
25071         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25072         format version into the generated library.
25073
25074         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25075         callee method into the caller since one of them could be shared.
25076
25077         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25078         system exceptions from AOT code now works.
25079
25080         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25081         method if it is domain neutral and the callee is not.
25082
25083         * graph.c (cfg_emit_one_loop_level): Fix warning.
25084
25085 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25086
25087         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25088         last checkin.
25089
25090 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25091
25092         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25093         is needed  by code which is executed before mono_runtime_init ().
25094         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25095         
25096         * mini.c (mono_thread_abort): Fix warning.
25097         (mono_jit_compile_method): Call static constructor in the AOT case too.
25098
25099         * aot.c (mono_compile_assembly): Fix warning.
25100
25101 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25102
25103         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25104
25105 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25106
25107         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25108
25109         * cpu-pentium.md: Fix the length of call opcodes so they include the
25110         ESP restoring instruction. Fixes #47968.
25111
25112 2003-08-28  Martin Baulig  <martin@ximian.com>
25113
25114         * mini-x86.c (mono_arch_call_opcode): Added support for
25115         MONO_TYPE_GENERICINST.
25116
25117         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25118
25119 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25120
25121         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25122         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25123
25124         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25125         metadata_section.
25126
25127 2003-08-26  Martin Baulig  <martin@ximian.com>
25128
25129         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25130         when reporting an error, set this to the actual error location.
25131         (mono_method_to_ir): Report the correct error location if
25132         get_basic_blocks() returned an error.
25133
25134 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25135
25136         * mini.c (mono_type_blittable): OBJECT is not blittable.
25137         (mono_method_blittable): Methods which have marshalling descriptors
25138         are not blittable either. Fixes #47842.
25139
25140 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25141
25142         * driver.c mini.c: Use an environment variable instead of a global 
25143         variable. Also fix the build.
25144
25145         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25146         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25147         reporting this. 
25148
25149         * driver.c mini.c: Added --with-valgrind option to turn off some
25150         code which prevents mono from running under valgrind.
25151
25152         * mini.c (mono_emit_call_args): Fixed warning.
25153
25154         * mini.c (mono_emulate_opcode): Fixed warning.
25155
25156 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25157
25158         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25159         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25160         regalloc.c, regalloc.h: specify available registers in arch-specific
25161         code and support floats in the regallocator (patch by Laurent Morichetti 
25162         <l_m@pacbell.net>)
25163
25164 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25165
25166         * mini.c: mono_thread_current() can be called only after
25167         mono_runtime_init(): rearrange code to not call it early on.
25168
25169 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25170
25171         * mini.c: allocate jump tables in the code mempools.
25172
25173 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25174
25175         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25176         freed.
25177
25178 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25179
25180         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25181         12 to 16.  This fixes bug #47453.
25182
25183
25184 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25185
25186         * mini-ppc.c: fixed indexed load and unsigned compares.
25187
25188 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25189
25190         * mini.c: reenabled installation of handler for
25191           thread abort signal.
25192
25193 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25194
25195         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25196         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25197         until it's fixed and actually useful.
25198
25199 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25200
25201         * inssel-long32.brg: couple more opcodes implemented.
25202
25203 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25204         
25205         * mini-sparc.c: Even more opcodes implemeted.
25206
25207 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25208
25209         * mini-sparc.c: More opcodes implemented.
25210
25211 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25212
25213         * mini-sparc.c: More opcodes implemented.
25214
25215 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25216
25217         * inssel-sparc.brg: Add some needed rules.  Direct
25218         copy from PPC.
25219         * Makefile.am: Use inssel-sparc.brg
25220         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25221         an assert happy for now.
25222
25223 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25224
25225         * mini-sparc.c: Fixed compile errors.
25226         * exceptions-sparc.c: Same.  We now produce a mono binary 
25227         on sparc-linux.  Yea.
25228
25229 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25230
25231         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25232         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25233         They compile, but do not work.
25234
25235 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25236
25237         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25238         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25239         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25240         (ct@gentoo.org).
25241
25242 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25243
25244         * mini.c: more opcodes implemented and better support for generics.
25245
25246 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25247
25248         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25249         * mini.c, mini.h: first cut at generics support: some new instructions 
25250         added and changed the behaviour of some of the existing ones.
25251
25252 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25253
25254         * mini.c: Removed definition of metadata_shared mutex here.
25255
25256 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * mini-x86.c: make vararg calls work for instance methods.
25259
25260 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25261
25262         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25263         returns the arguments in a separte list, now.
25264
25265 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25266
25267         * aot.c, mini.c: updates for array type representation changes.
25268
25269 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25270
25271         * mini.c: register function to perform jit shutdown.
25272
25273 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25274
25275         * mini.c: use a faster allocator if possible.
25276
25277 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25278
25279         * aot.c: some cleanups and portability changes.
25280
25281 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25282
25283         * mini.c: use faster allocation for CEE_BOX if possible.
25284
25285 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25286
25287         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25288         Moved inlined mempcy code to its own function so that is can be
25289         reused. Added an inline memset function as well (optimized initobj).
25290         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25291
25292 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25293
25294         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25295
25296 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25297
25298         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25299         arch code can setup the cpu for CLR execution, if needed.
25300         We use it on x86 to set the precision of FP operations.
25301
25302 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25303
25304         * mini.c: disable some optimizations if we can guess they'll cost too
25305         much for a given method.
25306
25307 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25308
25309         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25310         
25311 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25312         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25313         info collection support.
25314
25315 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25316
25317         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25318         is now implemented in the profiling API. Get rid of a couple of
25319         unnecessary global variables.
25320
25321 2003-06-15  Nick Drochak <ndrochak@gol.com>
25322
25323         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25324         * cpu-g4.md: add op_bigmul and op_bigmul_un
25325         * cpu_pentium.md: add op_bigmul_un
25326         * inssel-long32.brg: add rule for unsigned bigmul
25327         * mini-ops.h: define OP_BIGMUL_UN
25328         * mini-x86.c: THE BUG: handle (un)signed properly
25329         * mini.c: choose unsigned opcode if needed.
25330         This set of patches fixes bug #44291
25331
25332 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25333
25334         * mini.c (optimize_branches): improved to handle all kinds of
25335         conditional branches.
25336
25337 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25338
25339         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25340         don't raise exceptions.
25341
25342 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25343
25344         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25345         to arch-specific files.
25346
25347 2003-06-09  Martin Baulig  <martin@ximian.com>
25348
25349         * Makefile.am (libs): Added $(LIBGC_LIBS).
25350
25351 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25352
25353         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25354         and OP_ATAN (fixes bug#44293).
25355
25356 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25357
25358         * Makefile.am, mini-x86.c: rename cpu description array to
25359         pentium_desc, since some compilers define the 'pentium' preprocessor
25360         symbol.
25361
25362 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25363
25364         * mini.c (mini_select_instructions): add explicit branch if the
25365         following block is not the false target of a conditional branch -
25366         we need this with any optimization that reorder or remove bblocks
25367
25368         * mini.c (optimize_branches): bug fixes
25369
25370 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25371
25372         * mini.c (mono_method_to_ir): inline static readonly fields
25373
25374         * ssa.c (fold_tree): start cfold support for long (very simple
25375         cases only)
25376
25377         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25378
25379 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25380
25381         * inssel.brg: fixed memcpy (bug #44219).
25382
25383 2003-06-05  Dick Porter  <dick@ximian.com>
25384
25385         * driver.c: Set the glib log levels to not abort if g_message
25386         recurses.
25387
25388         g_set_prgname() has to happen before mini_init() so that the
25389         process handle gets the info.
25390         
25391 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25392
25393         * driver.c: add intrins to the default optimizations to get wider
25394         exposure.
25395
25396 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25397
25398         * mini.h: some large basic blocks will overflow a 16-bit
25399         integers for symbolic registers.
25400
25401 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25402
25403         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25404         (mono_arch_output_basic_block): fix bug 43499 
25405
25406 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25407
25408         * mini.c: kill duplicated definition of mono_debug_format.
25409
25410 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25411
25412         * mini-x86.c, arrays.cs: fixed register allocation bug.
25413
25414 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25415
25416         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25417
25418         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25419
25420 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25421
25422         * mini.c:
25423         (print_method_from_ip): also print source location information if
25424         available.
25425
25426 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25427
25428         * mini.c (mono_find_block_region): bug fix in region code
25429         (mini_method_compile): enable removing unreachable code again, but
25430         only in methods without exception clauses.
25431
25432 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25433
25434         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25435         Implemented arglist opcode and handling of TypedReference type.
25436         Fixed x86 call convention when a structure is returned.
25437         Minimal support for calling static vararg methods.
25438
25439 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25440
25441         * mini.c (mini_method_compile):  always remove unreachable code,
25442         because the code in them may be inconsistent  (access to dead
25443         variables for example).
25444
25445 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25446
25447         * driver.c, debug-mini.c: warning fixes.
25448
25449 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25450
25451         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25452
25453 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25454
25455         * mini.c: thread-static fields are registered in mono_class_vtable(),
25456         so ensure the function is called before checking for them.
25457
25458 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25459
25460         * mini.c (optimize_branches): fix for bug 43586
25461
25462         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25463         overflow (fixes Bug #43639)
25464
25465 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25466
25467         * mini.c, objects.cs: allow the use of stobj for primitive types.
25468
25469 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25470
25471         * mini.c: be less strict about argument checking until we support
25472         running the verifier.
25473
25474 2003-05-27  Nick Drochak <ndrochak@gol.com>
25475
25476         * basic-long.cs: tests for (ulong)int * (ulong)int also
25477         * mini.c: use the same trick for (ulong)int * (ulong)int
25478
25479 2003-05-27  Nick Drochak <ndrochak@gol.com>
25480
25481         * basic-long.cs: add regression test for (long)int * (long)int
25482         * cpu-pentium.md: add op_bigmul specification
25483         * inssel-long32.brg: add OP_BIGMUL rule
25484         * mini-ops.h: add OP_BIGMUL
25485         * mini-x86.c: register allocator: handle case where src1 needs to be
25486         in EAX.
25487         * mini.c: substitute special BIGMUL opcode in the tree for 
25488         (long)int * (long)int
25489
25490 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25491
25492         * jit-icalls.c: call the type ctor on field access if needed.
25493
25494 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25495
25496         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25497         to a method (including results of ldelema, bug#43207).
25498
25499 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25500
25501         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25502         colors to show exception handler blocks.
25503
25504         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25505         (fix for pinvoke7.cs).
25506
25507 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25508
25509         * mini.h, mini.c: ensure correct initialization order for types that
25510         require it. Prepare for lazy compilation of jit icall wrappers.
25511         Provide a name for opcode emulation to reduce unneeded mallocing.
25512
25513 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25514
25515         * mini-x86.c: better register restoring code and profiling
25516         support for tail calls.
25517
25518 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25519
25520         * mini.h, driver.c: prepare for leaf methods optimization.
25521
25522 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25523
25524         * mini.c: get targets of branches before converting a method.
25525
25526 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25527
25528         * mini.c (optimize_branches): added some experimental code (disbaled) 
25529
25530 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25531
25532         * mini.c (optimize_branches): fix branch to branch optimization 
25533
25534         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25535
25536         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25537
25538         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25539
25540         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25541         if needed.
25542
25543 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25544
25545         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25546         enable use of interface variables again.
25547
25548         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25549         I1 to registers because there is no simply way to sign extend 8bit
25550         quantities in caller saved registers on x86.
25551
25552         * inssel-float.brg: set costs of some rules to 2 so
25553         that monobure always select the arch. specific ones if supplied,
25554         regardless of the order we pass the files to monoburg.
25555
25556 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25557
25558         * mini.c, mini-x86.c: since the magic trampoline for jumps
25559         can't patch the code directly, we do it as soon as the
25560         method gets compiled.
25561
25562 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25563
25564         * mini-x86.c, mini.h: introduce a new patching method
25565         to support CEE_JMP and tail calls.
25566         * mini.c: obey tail.call. Don't precompile methods target
25567         of CEE_JMP.
25568         * tramp-x86.c: new trampoline code to handle methods
25569         reached through a jump.
25570
25571 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25572
25573         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25574         bit values to registers
25575
25576 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25577
25578         * mini.c (mono_compile_get_interface_var): share interface
25579         variables if possible.
25580
25581 2003-05-16  Martin Baulig  <martin@ximian.com>
25582
25583         * debug-mini.c (mono_init_debugger): New function to initialize
25584         the debugger.  This is not in the debugger since it needs to
25585         access some of mini's internals.
25586
25587 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25588
25589         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25590
25591 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25592
25593         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25594         for value type handling.
25595
25596 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25597
25598         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25599         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25600
25601 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25602
25603         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25604           the constructor through a proxy.
25605
25606 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25607
25608         * jit-icalls.c, inssel.brg: fixes to array element address
25609         calculations.
25610
25611 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25612
25613         * mini-x86.c (is_regsize_var): allocate pointer to registers
25614
25615 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25616
25617         * driver.c: fixed typo, added intrins to the set of optimizations
25618         tested with regressions.
25619
25620 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25621
25622         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25623         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25624         test case.
25625
25626 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25627
25628         * inssel.brg: remove some common pop instructions without side effects
25629
25630 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25631
25632         * inssel-x86.brg: fixed thinko in int to double conversions.
25633
25634 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25635
25636         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25637
25638 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25639
25640         * inssel-long32.brg: two more missing instructions.
25641
25642 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25643
25644         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25645         if not already set.
25646
25647 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25648
25649         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25650         correctly.
25651
25652         * basic-float.cs: Added tests for negative zero.
25653
25654 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25655
25656         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25657         a couple of missing operations for long casts, with test cases.
25658
25659 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25660
25661         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25662
25663 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25664
25665         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25666         code size estimation.
25667
25668 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25669
25670         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25671         abstract methods (fix bug 42542)
25672
25673         * aot.c: add ability to handle array types
25674         
25675 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25676
25677         * mini.c: Call the _specific versions of the object allocation
25678         functions if possible.
25679
25680 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25681
25682         * driver.c: call setlocale ().
25683
25684 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25685
25686         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25687         windows build.
25688
25689 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25690
25691         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25692
25693         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25694         wrappers (fix bug 42122)
25695
25696 2003-05-04  Martin Baulig  <martin@ximian.com>
25697
25698         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25699
25700         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25701         s/mini_set_defaults/mono_set_defaults/g.
25702
25703 2003-05-04  Martin Baulig  <martin@ximian.com>
25704
25705         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25706
25707 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25708
25709         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25710         (reported by Don Roberts).
25711
25712 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25713
25714         * mini.c: temporarily work around two bugs for this release.
25715
25716 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25717
25718         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25719         that contains -export-dynamic and it makes using the ld script
25720         useless.
25721         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25722
25723 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25724
25725         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25726         specific cpu.
25727
25728 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25729
25730         * mini.c: make sure leave calls all the needed finally blocks,
25731         even when the target jumps out of multiple exception clauses.
25732
25733 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25734
25735         * ldscript, Makefile.am: add linker script to reduce the number of
25736         exported symbols (should also fix the issues with libwine defining
25737         some of the same symbols in io-layer).
25738
25739 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25740
25741         * driver.c (mini_main): Avoid assertion when no file name is given on 
25742         the command line.
25743
25744 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25745
25746         * driver.c: added --version/-V command line option.
25747         Added the inline optimization in the regression tests.
25748
25749 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25750
25751         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25752         to the type in the method signature (fixes bug#42134).
25753
25754 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25755
25756         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25757
25758 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25759
25760         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25761
25762 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25763
25764         * driver.c: fixed bug #42100.
25765
25766 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25767
25768         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25769
25770 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25771
25772         * mini.c: moved most of the code required to do inlining to its own
25773         function so it can be reused. Inline also ctors if appropriate.
25774
25775 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25776
25777         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25778         the runtime can call mono API functions.
25779
25780 2003-04-27  Martin Baulig  <martin@ximian.com>
25781
25782         * debug-mini.c (mono_debug_init_method): Added
25783         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25784         send a notification to the debugger.
25785
25786         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25787         running in the Mono Debugger, just pass the breakpoint number to
25788         mono_debug_init_method().
25789
25790         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25791
25792 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25793
25794         * mini.c: allow some more unsafe compares.
25795
25796 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25797
25798         * mini-x86.c, Makefile.am: make distcheck works (partially from
25799         a patch by Richard Lee <r.h.lee@attbi.com>).
25800         * regset.c, regset.h: removed, they are unused.
25801
25802 2003-04-25  Dick Porter  <dick@ximian.com>
25803
25804         * driver.c: Usage reports the name as 'mono' not 'mini'
25805         * exceptions-x86.c: Build and run on freebsd
25806
25807 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25808
25809         * Makefile.am: install the program with the 'mono' name and
25810         the library as libmono instead of mini and libmini.
25811
25812 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25813
25814         * driver.c: provide the APIs for the embedding interface of the old jit.
25815
25816 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25817
25818         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25819
25820 2003-04-23  Martin Baulig  <martin@ximian.com>
25821
25822         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25823
25824         * driver.c: Added `--debug' command line argument to enable
25825         debugging support.
25826
25827 2003-04-23  Martin Baulig  <martin@ximian.com>
25828
25829         * debug.[ch]: Removed.  The code is now in
25830         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25831
25832         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25833         last six months.
25834
25835 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25836
25837         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25838
25839 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25840
25841         * mini.c:
25842         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25843         mono_domain_finalize.
25844         (mini_method_compile): use mono_method_profile* if the the option is
25845         enabled.
25846
25847 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25848
25849         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25850         methods with their wrapper.
25851
25852         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25853         methods with their wrapper.
25854
25855         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25856         their wrapper.
25857
25858         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25859         wrapper.
25860
25861         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25862         methods.
25863
25864 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25865
25866         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25867
25868 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25869
25870         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25871         of the mempool. This is slightly faster and uses less memory
25872
25873 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25874
25875         * mini.c: avoid O(n) allocation for variables.
25876
25877 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25878
25879         * mini.c: handle items on the stack after inlining methods.
25880
25881 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25882
25883         * mini.c: make the method->opcode optimization dependent
25884         on MONO_OPT_INSTRINS and do it lazily.
25885
25886 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25887
25888         * driver.c: print overall results at the end of regression run.
25889
25890 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25891
25892         * inssel.brg: don't overwrite symbolic registers.
25893
25894 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25895
25896         * inssel-x86.brg: fix conversion from long to float.
25897
25898 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25899
25900         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25901
25902 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25903
25904         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25905
25906         * driver.c: Added --print-vtable option as in the old JIT.
25907
25908 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25909
25910         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25911
25912 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25913
25914         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25915
25916 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25917
25918         * mini.c regalloc.c regalloc.h: Fix memory leak.
25919
25920 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25921
25922         * aot.c (mono_aot_get_method): register all used strings
25923
25924 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25925
25926         * mini.c: always intern strings references with ldstr at compile time.
25927
25928 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25929
25930         * Makefile.am: add BUILT_SOURCES.
25931
25932 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25933
25934         * driver.c: give a better error message when the assembly to execute
25935         doesn't have an entry point.
25936
25937 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25938
25939         * Makefile.am: added hack for automake
25940
25941         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25942         correct sematics.
25943
25944         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25945
25946 22003-04-07  Martin Baulig  <martin@ximian.com>
25947
25948         * Makefile.am: Added Makefile.am.
25949
25950         * debugger-main.c: Removed, this is now in the debugger where it
25951         belongs.
25952
25953         * mini.pc.in: Call this package `mini' for the moment.
25954
25955
25956
25957
25958
25959
25960
25961
25962
25963
25964
25965
25966
25967
25968